Vue イメージ ドラッグ アンド ドロップ ズーム コンポーネントの使用方法の詳細な説明

Vue イメージ ドラッグ アンド ドロップ ズーム コンポーネントの使用方法の詳細な説明

Vueイメージドラッグアンドドロップズームコンポーネントの具体的な使い方は参考までに。具体的な内容は次のとおりです。

<ドキュメント>
  画像コンポーネント - ユーザーはズームイン、ズームアウト、ドラッグします</doc>
<テンプレート>
  <div style="width: 100%;position: relative;overflow: hidden;text-align: center;border: 1px solid #f1f2f3;">
    <el-button size='mini' @click="toBIgChange" icon="el-icon-zoom-in"
      スタイル="位置: 絶対;上: 2px;左: 2px;z-index: 999;"></el-button>
    <el-button size='mini' @click="toSmallChange" icon="el-icon-zoom-out"
      スタイル="位置: 絶対;上: 2px;左: 40px;z-index: 999;"></el-button>
    <img id="img" :src="src" alt="" @mousedown.prevent="dropImage" :style="{transform:'scale('+multiples+')'}">
  </div>
</テンプレート>
<スクリプト>
  エクスポートデフォルト{
    プロパティ: ['src'],
    データ() {
      戻る {
        倍数: 1,
        odiv: ヌル、
      }
    },
    マウント() {
      this.dropImage()
    },
    時計:
      src(新しい値、古い値) {
        this.multiples = 1
        if (this.odiv !== null) {
          this.odiv.style.left = '0px';
          this.odiv.style.top = '0px';
        }
      },
    },
    メソッド: {
      ビッグチェンジ() {
        (this.multiples >= 2)の場合{
          戻る;
        }
        this.multiples += 0.25;
      },
      //縮小toSmallChange() {
        (this.multiples <= 1)の場合{
          戻る;
        }
        this.multiples -= 0.25;
      },
      // ドラッグドロップイメージ(e) {
        e === nullの場合{
          戻る
        }
        this.odiv = e.target; // ターゲット要素を取得します // 要素に対するマウスの位置を計算します let disX = e.clientX - this.odiv.offsetLeft;
        disY = e.clientY - this.odiv.offsetTop とします。
        document.onmousemove = (e) => { // マウスが押されて移動されたイベント // 要素に対するマウスの位置をマウスの位置から減算して、要素の位置を取得します。let left = e.clientX - disX;
          top = e.clientY - disY とします。

          //要素の位置を positionX と positionY にバインドします。this.positionX = top;
          this.positionY = 左;

          //現在の要素を移動します this.odiv.style.left = left + 'px';
          this.odiv.style.top = top + 'px';
        };
        ドキュメント.onmouseup = (e) => {
          ドキュメント.onmousemove = null;
          ドキュメント.onmouseup = null;
        };
      },
    }
  }
</スクリプト>
<スタイルスコープ>
  画像 {
    幅: 100%;
    位置: 相対的;
  }
</スタイル> 

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

以下もご興味があるかもしれません:
  • Vueコンポーネントを使用して画像のドラッグとズーム機能を実現する
  • Vue は画像プレビュー効果の例 (ズームイン、ズームアウト、ドラッグ) を実装します
  • Vueはズームイン、ズームアウト、ドラッグ機能を実装しています
  • Vue 画像のスケーリングの実装 - コンポーネントのドラッグ

<<:  MySQLフィールドのデフォルト値を設定する方法

>>:  ウェブページレイアウトデザインのシンプルな原則

推薦する

Linux で killall コマンドを使用してプロセスを終了する 8 つの例

Linux コマンドラインには、プロセスを強制終了するためのコマンドが多数用意されています。たとえば...

Vue3の状態管理の使用方法の詳細な説明

目次背景提供/注入共有状態の抽出データを提供するデータの挿入まとめ反応的な共有状態の抽出共有状態の使...

202 無料の高品質 XHTML テンプレート (2)

前回の記事「202 個の無料高品質 XHTML テンプレート (1)」に続き、123WORDPRES...

Web フォントの読み込みを最適化する方法をご存知ですか?

タイトル通りです!一般的に使用される font-family はブラウザの組み込みフォントを読み込み...

MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明

ビュービューとは何ですか?ビューの役割は何ですか?ビューは仮想テーブルであり、データ自体を含まない論...

MySQL スロークエリを通じて MySQL のパフォーマンスを最適化する方法

アクセス数が増えると、MySQL データベースへの負荷が増大します。MySQL アーキテクチャを使用...

Linux QT Kit が見つからない、バージョンが空の問題の解決策

現在このような問題が発生しています 私の状況は、QT が動かなくなってしまったため、仮想マシンを再起...

mysql データベースの作成、ユーザーの追加、ユーザー認証の実用的な方法

1. MySQLデータベースを作成する1. データベース構文を作成する --「testdb」という名...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

MySQLクエリ文の実行プロセスを理解するための記事

序文要件を満たす特定のデータをデータベースから取得する必要があります。Select ABC FROM...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

MySQLがクエリキャッシュをキャンセルした理由

MySQL には以前、クエリ キャッシュ (Query Cache) がありました。8.0 以降では...

Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策

Docker コンテナを適用する場合、多くの場合、ホスト ディレクトリを Docker コンテナにマ...

Vue.js プロジェクトの開始方法

目次1. Node.jsとVue 2. ローカル開発環境でフロントエンドのVueプロジェクトを実行す...

MySQLでグローバル変数とセッション変数を設定する2つの方法の詳細な説明

1. MySQL でグローバル変数を変更するには 2 つの方法があります。方法 1: my.ini ...