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 解凍バージョンのインストール グラフィック チュートリアル

推薦する

Linux サーバーの状態を監視する方法

私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリテ...

Js における new 演算子の役割の詳細な説明

序文Js は現在最も一般的に使用されているコード操作言語であり、その中でも new 演算子は特によく...

docker の実行に必要な権限の分析

Docker を実行するには root 権限が必要です。非 root ユーザーに docker コマ...

MySQL 8.0.11 圧縮版のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0圧縮パッケージのインストール方法、詳細は次のとおりです知らせ:オペレーティング シ...

WeChatアプレットにおけるデータ保存実装方法

目次グローバル変数 globalDataページプライベート変数データストレージ非同期ストレージ(デバ...

フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード

フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...

MySQLマスタースレーブデータベース構築方法の詳細な説明

この記事では、MySQL マスター/スレーブ データベースの構築方法について説明します。ご参考までに...

Linux ncコマンドの概要

NC のフルネームは Netcat (Network Knife) で、作成者は Hobbit &a...

CSS3 アニメーション – ステップ機能の説明

最近、CSS3 アニメーションのソース コードの実装をいくつか見ていたところ、CSS コード アニメ...

MySQL 5.7.20 Green Edition のインストールの詳細なグラフィックチュートリアル

まず、MySQL とは何かを理解しましょう。 MySQL は、スウェーデンの会社 MySQL AB ...

Flinkのフォールトトレラントメカニズムに関する簡単な説明:ジョブ実行とデーモン

目次1. ジョブ実行のフォールトトレランス1.1 タスクフェイルオーバー戦略1.2 ジョブ再開戦略2...

ウェブページを作成するために最もよく使用されるHTMLタグ

1. よく使われるHTMLタグの最適化HTML は Web 編集者にとって基本的なスキルであるべきで...

Linux カーネル デバイス ドライバー システム コールに関する注意事項

/**************************** * システムコール**********...

Dockerで新しいイメージを手動で構築する方法

この記事では、Docker で新しいイメージを手動で構築する方法を紹介し、皆さんと共有します。詳細は...

Windows で mysql 8.0.12 をインストールするための詳細なチュートリアル

この記事では、MySQL 8.0.12のインストール方法に関する詳細なチュートリアルを参考までに紹介...