この記事では、Vueでドラッグ可能なコンポーネントとドラッグ可能なコンポーネントを実装する方法を参考までに紹介します。具体的な内容は次のとおりです。 説明する:コンポーネントはドラッグ機能のみをカプセル化し、コンテンツは#header、#default、#footerスロットを通じてカスタマイズされます。 効果:コード:<テンプレート> <div ref="ラッパー" クラス="ドラッグバーラッパー" > <div ref="ヘッダー" クラス="ドラッグバーヘッダー" > <!-- ヘッダー領域 --> <スロット名="ヘッダー" /> </div> <div class="ドラッグバーコンテンツ"> <!-- メインコンテンツエリア --> <スロット名="デフォルト" /> </div> <div class="ドラッグバーフッター"> <!-- 下部領域 --> <スロット名="フッター" /> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ() { 戻る { wrapperDom: null、 ヘッダーDom: null、 ディスX: 0, ディスY: 0, 最小左: 0, 最大左: 0, 最小トップ: 0, 最大上: 0, 前へ左: 0, 前へトップ: 0, }; }, メソッド: { 初期化ドラッグ() { this.wrapperDom = this.$refs.wrapper; this.headerDom = this.$refs.header; this.headerDom.addEventListener('mousedown', this.onMousedown, false);//ヘッダー領域をクリックしてドラッグします}, マウスダウン時(e) { this.disX = e.clientX - this.headerDom.offsetLeft; this.disY = e.clientY - this.headerDom.offsetTop; this.minLeft = this.wrapperDom.offsetLeft; this.minTop = this.wrapperDom.offsetTop; this.maxLeft = window.innerWidth - this.minLeft - this.wrapperDom.offsetWidth; this.maxTop = window.innerHeight - this.minTop - this.wrapperDom.offsetHeight; const { left, top } = getComputedStyle(this.wrapperDom, false); this.prevLeft = parseFloat(left); this.prevTop = parseFloat(top); document.addEventListener('mousemove', this.onMousemove, false); document.addEventListener('mouseup', this.onMouseup, false); document.body.style.userSelect = 'none'; //ドラッグ中に選択したテキストの干渉を排除します}, マウスを動かすと(e) { left = e.clientX - this.disX とします。 top = e.clientY - this.disY とします。 if (-left > this.minLeft) { 左 = -this.minLeft; } そうでない場合 (left > this.maxLeft) { 左 = this.maxLeft; } if (-top > this.minTop) { 上 = -this.minTop; } そうでない場合 (top > this.maxTop) { 上 = this.maxTop; } this.wrapperDom.style.left = this.prevLeft + left + 'px'; this.wrapperDom.style.top = this.prevTop + top + 'px'; }, マウスアップ時() { document.removeEventListener('mousemove', this.onMousemove, false); document.removeEventListener('mouseup', this.onMouseup, false); document.body.style.userSelect = 'auto'; //テキストを選択可能に戻す}, }, マウント() { this.initDrag(); } }; </スクリプト> <スタイルスコープ> .ドラッグバーラッパー{ 位置: 固定; zインデックス: 2; 上位: 50%; 左: 50%; 変換: translate(-50%, -50%); ディスプレイ: フレックス; flex-direction: 列; } .ドラッグバーヘッダー{ 背景色: #eee; カーソル: 移動; /*マウスドラッグスタイル*/ } .ドラッグバーコンテンツ{ 背景色: #fff; } .ドラッグバーフッター{ 背景色: #fff; } </スタイル> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: 数百万のデータボリュームに対する MySQL ページングクエリ方法とその最適化の提案
10.4.1 フレームセットとフレームの違い まず、フレームセットとフレームの違いについて説明します...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...
変数の宣言グローバル変数の設定@a='新しい変数' を設定します。関数やストアドプロ...
MySQL でテーブルスペースの断片化を解消する詳細な例断片化の原因(1)テーブルのストレージは断片...
この記事では、下線を実現するための CSS3 トランジションのサンプル コードを紹介します。このコー...
トレーニングのための一連のプロジェクト反応+ts内容は少ないですが、フックのカプセル化、ts ジェネ...
Nginx ロード バランシング サーバー: IP: 192.168.0.4 (Nginx-Serv...
目次1. 準備2. 展開プロセス3. アクセステストHalo は、ブログに慣れている学生に追加のオプ...
1. スタイルシートの先頭にコメント ブロックを追加して、スタイルシートの作成日、作成者、タグ、その...
序文この記事は主に CentOS7 で PHP スケジュールタスクを実行することに関する関連コンテン...
Web プロジェクトでは、タイムライン コントロールをよく使用します。この記事では、項目ごとに展開で...
1. IDEAの下にあるターミナルをクリックし、mvn clean installと入力します。 次...
explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...
この記事では、一般的な基本的な Linux コマンドとその使用方法を例を使って説明します。ご参考まで...
コード効果を異なるブラウザで表示することはよくあることなので、異なるショートカットキーを使用して対応...