Vueはdivホイールのズームインとズームアウトを実装します

Vueはdivホイールのズームインとズームアウトを実装します

Vue プロジェクトで div ホイールのズームインとズームアウト、ドラッグ効果、キャンバス効果に似た機能を実装します。

1. vue-draggable-resizable プラグインをインポートし、ここをクリックして GitHub アドレスを入力します。

1)、npm install --save vue-draggable-resizable
2) main.jsファイル内

'vue-draggable-resizable' から VueDraggableResizable をインポートします。
'vue-draggable-resizable/dist/VueDraggableResizable.css' をインポートします。
Vue.component('vue-draggable-resizable', VueDraggableResizable)

3) vueファイルで使用する

main.js:

'vue' から Vue をインポートします
'./App' から App をインポートします
'./router' からルーターをインポートします
Vue.config.productionTip = false

// iview
'view-design' から ViewUI をインポートします。
'view-design/dist/styles/iview.css' をインポートします。
Vue.use(ビューUI)

// ドラッグ、ズーム、キャンバス プラグイン import VueDraggableResizable from 'vue-draggable-resizable'
'vue-draggable-resizable/dist/VueDraggableResizable.css' をインポートします。
Vue.component('vue-draggable-resizable', VueDraggableResizable)

新しいVue({
  el: '#app',
  ルーター、
  コンポーネント: { アプリ },
  テンプレート: '<App/>'
})

vue ファイル: vue-draggable-resizableコンポーネント構成項目とhandleTableWheel メソッドおよびtableZoomメソッドの導入に重点を置きます。

<テンプレート>
    <div class="is">
        <div
            style="高さ: 800px; 幅: 100%; 境界線: 1px solid #000; 位置: relative; オーバーフロー: hidden;"
        >
            <!-- コンポーネントをインポートします。 :lock-aspect-ratio="true": アスペクト比をロックします:resizable="false": スケーラブルではありません -->
            <vue-ドラッグ可能-サイズ変更可能
                w="自動"
                h="自動"
                :grid="[20,40]"
                :x="10"
                :y="10"
                :サイズ変更可能="false"
            >
                <div class="table" ref="table" @wheel.prevent="handleTableWheel($event)">
                 <-- iview テーブル、何でも構いません、どの div でも構いません -->
                    <表
                        :columns="列1"
                        :data="データ1"
                        サイズ="小"
                        :disabled-hover="true"
                        国境
                    >
                        <テンプレート スロット スコープ="{ 行, インデックス }" スロット="名前">
                            <ツールチップ:content="row.name" placement="top" 転送>
                                <span class="name" @click="handleCellClick(row)">{{ row.name }}</span>
                            </ツールチップ>
                        </テンプレート>
                    </表>
                </div>
            </vue-ドラッグ可能-サイズ変更可能>
        </div>
    </div>
</テンプレート>

<スクリプト>
「vue-draggable-resizable」から VueDraggableResizable をインポートします。
エクスポートデフォルト{
    名前: "は",
    データ() {
        戻る {
            列1: [
                {
                    タイトル:「名前」、
                    スロット: "名前",
                    幅: 120
                },
                {
                    タイトル: 「年齢」、
                    キー: "年齢",
                    幅: 120
                },
                {
                    タイトル:「住所」、
                    キー: "アドレス"、
                    幅: 120
                },
                {
                    タイトル:「名前」、
                    キー: "名前",
                    幅: 120
                },
                {
                    タイトル: 「年齢」、
                    キー: "年齢",
                    幅: 120
                },
                {
                    タイトル:「住所」、
                    キー: "アドレス"、
                    幅: 120
                },
                {
                    タイトル:「名前」、
                    キー: "名前"、
                    幅: 120
                },
                {
                    タイトル: 「年齢」、
                    キー: "年齢",
                    幅: 120
                },
                {
                    タイトル:「住所」、
                    キー: "アドレス"、
                    幅: 120
                }
            ]、
            データ1: [
                {
                    名前: 「ジョン・ブラウン」
                    年齢: 18歳
                    住所:「ニューヨークNo.1レイクパーク」
                },
                {
                    名前: 「ジム・グリーン」
                    年齢: 25歳
                    住所:「ロンドンNo.1レイクパーク」
                    セルクラス名: {
                        年齢: "デモテーブル情報セルの年齢",
                        アドレス: "デモ テーブル情報セル アドレス"
                    }
                },
                {
                    名前:「ジョー・ブラック」
                    年齢: 30,
                    住所:「シドニーNo.1レイクパーク」
                },
                {
                    名前:「ジョン・スノウ」
                    年齢: 26歳
                    住所:「オタワNo.2レイクパーク」
                    セルクラス名: {
                        名前: "デモ テーブル情報セル名"
                    }
                },
                {
                    名前: 「ジョン・ブラウン」
                    年齢: 18歳
                    住所:「ニューヨークNo.1レイクパーク」
                },
                {
                    名前: 「ジム・グリーン」
                    年齢: 25歳
                    住所:「ロンドンNo.1レイクパーク」
                    セルクラス名: {
                        年齢: "デモテーブル情報セルの年齢",
                        アドレス: "デモ テーブル情報セル アドレス"
                    }
                },
                {
                    名前:「ジョー・ブラック」
                    年齢: 30,
                    住所:「シドニーNo.1レイクパーク」
                },
                {
                    名前:「ジョン・スノウ」
                    年齢: 26歳
                    住所:「オタワNo.2レイクパーク」
                    セルクラス名: {
                        名前: "デモ テーブル情報セル名"
                    }
                }
            ]
        };
    },
    マウント() {},
    メソッド: {
        handleTableWheel(イベント) {
            obj = this.$refs.table; とします。
            this.tableZoom(obj, event) を返します。
        },
        テーブルズーム(オブジェクト、イベント) {
            // デフォルトでは最初は100%です
            zoom = parseInt(obj.style.zoom, 10) || 100 とします。
            //ホイールを1回回転すると、wheelDeltaの値が120増加または減少します
            ズーム += event.wheelDelta / 12;
            (ズーム>0)の場合{
                obj.style.zoom = ズーム + "%";
            }
            false を返します。
        },
        // セルのクリック イベント (ドラッグによってテーブルのデフォルト イベントがブロックされるかどうかをテストするために使用されますが、これは無関係です)
        ハンドルセルクリック(行) {
            this.$Message.info("クリックしました" + row.name);
        }
    }
};
</スクリプト>

<style スコープ lang="less">
。は {
    。テーブル {
        。名前 {
            カーソル: ポインタ;
        }
    }
}
// iview テーブル スタイル: iview の公式 Web サイトからコピーするだけです。問題ありません/deep/ .ivu-table {
    .demo-table-info-row td {
        背景色: #2db7f5;
        色: #fff;
    }
    td.demo-table-info-column {
        背景色: #2db7f5;
        色: #fff;
    }
    .demo-table-error-row td {
        背景色: #ff6600;
        色: #fff;
    }
    .demo-table-info-cell-name {
        背景色: #2db7f5;
        色: #fff;
    }
    .demo-table-info-cell-age {
        背景色: #ff6600;
        色: #fff;
    }
    .demo-table-info-cell-address {
        背景色: #187;
        色: #fff;
    }
}
// canvas.vdr 内の div 境界を削除します {
    境界線: なし;
}
</スタイル>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueはズームイン、ズームアウト、ドラッグ機能を実装しています
  • Vue は svg ファイルを使用して -svg のズームインとズームアウト操作を補完します (d3.js を使用)
  • Vue.js+Echarts 開発チャートのズームインとズームアウト機能の例
  • Vue イメージ ドラッグ アンド ドロップ ズーム コンポーネントの使用方法の詳細な説明

<<:  VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

>>:  Windows での MySQL 8.0.13 解凍バージョンのインストール グラフィック チュートリアル

推薦する

HTMLとは何ですか?

HTML 開発の歴史: HTML は英語で Hypertext Marked Language の...

Vueフレームワークで習得しなければならない重要な知識を学びます

1. Vueとは何かVue は、ユーザー ページを構築するためのプログレッシブ フレームワークです。...

Node.js+express+socket でオンラインのリアルタイム多人数チャットルームを実現

この記事では、オンラインリアルタイム多人数チャットルームを実現するためのNode.js+expres...

Tomcat で静的リソースを処理するチュートリアル

序文Tomcat 内のすべてのリクエストは Servlet によって処理され、静的リソースも例外では...

MySQL ストアドプロシージャとストアドファンクションの詳細な説明

1 ストアドプロシージャ1.1 ストアドプロシージャとは何かストアド プロシージャは、特定の機能を実...

HTML のテキストエリア タグ

<textarea></textarea> は、複数行を入力できるテキスト ...

MySQL関連のツールをいくつかお勧めします

序文:インターネット技術の継続的な発展に伴い、MySQL 関連のエコシステムはますます充実し、ますま...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

コンパイル、インストールから設定ファイルの説明まで、中国語でnginxの詳細な説明

この記事では、コンパイルとインストールから設定ファイルの説明まで、Nginx について詳しく紹介しま...

DockerコンテナでArthasを使用するための詳細な手順

Arthas はあなたのために何ができるでしょうか? Arthas 、開発者に深く愛されている Al...

CocosCreator の新しいリソース管理システムの分析

目次1. 資源と建設1.1 クリエイターリソースファイルの基本1.2 リソースの構築2. アセットバ...

ウェブ クラスターの Docker Stack 展開方法の手順

Docker はますます成熟し、その機能もますます強力になっています。 Docker Stack を...

MySQL データ定義言語 DDL の基本ステートメント

MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...

CSS3で実装されたサムネイルホバー効果

成果を達成する実装コードhtml <ヘッダー> <h1><em>...

仮想マシンUbuntu 16.04がインターネットに接続できない問題の解決策

Ubuntu をインストールしたばかりですが、開いたときにネットワーク接続がありませんでした。右上隅...