この記事では、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 ページングクエリ方法とその最適化の提案
目次導入:感情のインストール:一般的な CSS コンポーネントを追加します。既存のコンポーネントにス...
この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...
MySQLサービス8.0.14のインストール(一般)の参考までに、具体的な内容は次のとおりです。イ...
いくつかの簡単な Linux コマンドを使用すると、ストレージまたは電子メールの添付ファイルのサイズ...
具体的な方法: 1. コマンドプロンプトを開く2. mysql -u root -pコマンドを入力し...
1. 需要正しい Cookie 配信と SSO テストを確実に実行できるように、ローカル テスト ド...
1. /usr/local/services/zookeeper フォルダを作成します。 mkdir...
目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....
Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。ス...
Win10 のインストール (すでにインストールされている場合はスキップしてください) win10...
mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。しかし、場合...
:not疑似クラスセレクターは、式に一致しない要素をフィルタリングできます。例 テーブル tbod...
目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...
CSS3はクールな3D回転パースペクティブを実現します3D アニメーション効果はますます人気が高まっ...
1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...