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

推薦する

Nginx の負荷分散と動的および静的分離の原理と構成

目次1. Nginxは負荷分散の原則を実装する2. Nginxの動的および静的分離の原則Nginx ...

Mysql-connector-java ドライバのバージョン問題の概要

Mysql-connector-java ドライバのバージョンの問題私のデータベースのバージョンは ...

HTMLページの読み込みと解析プロセスの詳細な紹介

ブラウザがHTMLを読み込みレンダリングする順序1. IE は上から下へダウンロードし、上から下へレ...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

Vue でフルスクリーンを実装し、フルスクリーン終了を監視する

目次序文:実装手順:完全なソースコード:詳細情報:序文: vueでは、デフォルトページを実装し、di...

React イベントバインディングの詳細

目次クラスコンポーネントイベントバインディング関数コンポーネントイベントバインディング要約するRea...

CentOS7でPHPスケジュールタスクを実行する方法

序文この記事は主に CentOS7 で PHP スケジュールタスクを実行することに関する関連コンテン...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

シンプルなjQuery + CSSを使用してカスタムタグタイトルツールチップを作成します

導入シンプルな jQuery + CSS を使用して、ブラウザのデフォルトの動作を置き換えるカスタム...

MySQL 8.0 のメモリ関連パラメータの概要

理論的には、MySQL によって使用されるメモリ = グローバル共有メモリ + max_connec...

Oracle Rownum 書き込みに似た MySQL の詳細な例

Rownum は、Oracle での独自の書き込み方法です。Oracle では、rownum を使用...

Vue で CSS カスタム変数を使用する方法

目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...

Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明

1. マックヴラン前回のブログ投稿で紹介した Docker コンテナのホスト間通信を実現するための ...

MySQL ストアド プロシージャ (in、out、inout) の詳細な説明

1. はじめにバージョン 5.0 以降でサポートされています。特定の機能を実行するための SQL ス...

DockerにTomcat8をインストールする方法

1. dockerでtomcat8をインストールする1. Docker HubでTomcatイメージ...