vue+tsは要素のマウスドラッグの効果を実現します

vue+tsは要素のマウスドラッグの効果を実現します

この記事の例では、要素のマウスドラッグ効果を実現するためのvue+tsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

成果を達成する

関連する使用属性

// clientX はブラウザの左上隅を基準としたマウスの x 軸座標です。スクロール バーによって変化しません。
// clientY ブラウザの左上隅を基準としたマウスの y 軸上の座標。スクロール バーによって変化しません。
// element.offsetTop は、要素と上部または上部コントロール間の距離 (整数、単位ピクセル) を示します。
// element.offsetLeft は、左または上のコントロールからの要素の位置 (整数、単位ピクセル) を参照します。
// element.offsetWidth は要素コントロール自体の幅 (整数、単位ピクセル) を参照します。
// element.offsetHeight は要素コントロール自体の高さ (整数、単位ピクセル) を参照します。
// clientHeigh = 高さ + 上部と下部のパディング
// clientWidth = 幅 + 左右のパディング

完全なコードを実装する

<テンプレート>
  <div class="to-do-list" ref="parentBox">
    <div class="検索タイトル">
      <h1 class="add-bold left-box" style="margin-left:35px">
        <a-icon type="unordered-list" style="margin-right: 10px;" />要素のドラッグ</h1>
    </div>
    <a-button ref="moveBtn" style="width: 100px;height: 40px;transition:none" class="move-btn" type="primary"
      >ドラッグボタン</a-button
    >
  </div>
</テンプレート>

<script lang="ts">
'vue-property-decorator' から { Component、Emit、Inject、Prop、Ref、Vue、Watch } をインポートします。

@成分({
  コンポーネント: {},
})
エクスポートデフォルトクラス BriberyInformation は Vue を拡張します {
  @Ref() 読み取り専用で移動Btn;
  @Ref() 読み取り専用の親ボックス。

  btnDown() {
    let box = this.moveBtn.$el; //ボタンのボックスのDOM要素を取得します。let parentBox = this.parentBox; //ボタンの親DOM要素を取得します。let parentH = parentBox.clientHeight; //ボタンの親要素の高さを取得します。
    let parentW = parentBox.clientWidth; //ボタンの親要素の幅を取得する

    x, y とします。
    let moveX, moveY; //移動距離let maxX, maxY; //最大移動距離let isDrop = false;

    ボックス.onmousedown = e => {
      x = e.clientX - box.offsetLeft; // e.clientX はブラウザの左上隅の x 軸に対するマウス座標 - ボタン上部のコントロールの位置 y = e.clientY - box.offsetTop;
      isDrop = true;
    };
    ドキュメント.onmousemove = e => {
      if (isDrop) {
        e.preventDefault();
        moveX = e.clientX - x; // 左側からの移動距離を取得します。 moveY = e.clientY - y; // 上からの移動距離を取得します。 // 最大移動距離 maxX = parentW - box.offsetWidth;
        maxY = 親H - ボックスのオフセット高さ;

        // 有効移動距離の計算 //console.log(Math.min(-1, 4, 6, 12)); // 出力 -1----- 複数のパラメーター、最小値を返す moveX = Math.min(maxX, Math.max(0, moveX));

        移動Y = Math.min(maxY, Math.max(0, 移動Y));
        box.style.left = moveX + 'px';
        box.style.top = moveY + 'px';
      } それ以外 {
        戻る;
      }
    };
    ドキュメント.onmouseup = e => {
      e.preventDefault();
      isDrop = false;
    };
  }

  マウント() {
    this.btnDown();
  }
}
</スクリプト>
<style スコープ lang="less">
.to-doリスト{
  位置: 相対的;
  最小高さ: 600px;
  最大高さ: 600px;
  幅: 600ピクセル;
  オーバーフロー: 非表示;
  境界線: 2px 黒一色;
  .move-btn {
    位置: 絶対;
  }
}
</スタイル>

参照元: JavaScript を使用して div のマウス ドラッグ効果を実装する

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

以下もご興味があるかもしれません:
  • Vue グローバルカスタム命令要素ドラッグ実装コード
  • Vuejsはドラッグすることで要素の幅を変更することで適応性を実現します。
  • 要素のドラッグを実装するための Vue カスタム命令に関する詳細なコード

<<:  XHTML タグのネスト規則の分析

>>:  CSS を使用して 3 つのステップでショッピング モールのカード クーポンを作成する

推薦する

Mysqlのprepare前処理の具体的な使用法

目次1. 前処理2. 前処理塗布方法A. 例: B. 実行計画の変更を追跡するための前処理C. スト...

VueはOSSを使用して画像や添付ファイルをアップロードします

OSS を使用して Vue プロジェクトに画像や添付ファイルをアップロードするここでは、写真のアップ...

VMware 仮想マシンの 3 つの接続方法の例の分析

NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...

MySQL 5.7 のルートパスワードログイン問題の解決策

前回の記事でMySQLサービスが起動しない問題が解決したと分かった後、パスワードなしでrootユーザ...

ファイル操作のためのLinuxシステムコール

目次1. ファイルを開くパラメータの紹介2. ファイルの読み取り3. ファイルを書き込む4. 閉じる...

nginx をシャットダウン/再起動/起動する方法

閉鎖サービス nginx 停止systemctl 停止 nginx起動するサービス nginx 開始...

モバイルの赤い封筒の雨機能ページを実装するための JavaScript HTML

この記事の例では、モバイル紅包雨機能ページを実現するためのHTMLの具体的なコードを共有しています。...

jQueryはフォントサイズ調整ケースを実装します

この記事では、フォントサイズを調整するためのjQueryの具体的なコードを参考までに紹介します。具体...

CSS3アニメーションを使用して、小さい円から大きい円に拡大し、外側に広がる効果を実現する例

序文この記事では、CSS3アニメーションを使用して、円が小さいものから大きく拡大し、外側に広がる効果...

MySQL における TIMESTAMPDIFF ケースの詳細な説明

1.構文TIMESTAMPDIFF(unit,begin,end); 単位に従って時間差を返します。...

MySQL FAQ シリーズ: ibdata1 ファイルのサイズが突然増加しないようにする方法

0. はじめにibdata1 ファイルとは何ですか? ibdata1 は、innodb システム テ...

Apache SkyWalkingのセルフモニタリングを素早く有効にする方法を説明します

1. Prometheusテレメトリデータを有効にするデフォルトでは、テレメトリは次のように無効にな...

MySQLデスクトップツールSQLyogのリソースとアクティベーション方法は、白黒のコマンドラインに別れを告げます

では、早速リソースについて見ていきましょう。 123WORDPRESS.COM ダウンロードSQLy...

vue-cropperプラグインは、画像キャプチャとアップロードコンポーネントのカプセル化を実現します。

vue-cropperプラグインをベースにした画像キャプチャとアップロードコンポーネントをカプセル...

Reactで例外を適切にキャプチャする方法

目次序文エラー境界エラー境界を超えてトライ/キャッチwindow.onerror、エラーイベント未処...