この記事では、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 ページングクエリ方法とその最適化の提案
フロントエンド開発者が必ず知っておくべきケースとして、タブバーの切り替え効果があります。タブバー自体...
私たちのコンピューターには、ディレクトリ、写真、ソース コードなどのファイルが保存されています。たく...
説明: 指定された時間内に前のノードのコンテンツを置き換えるタイマーを設定します。 1. キーコード...
MySQL Limit はセグメント内のデータベース データをクエリでき、主にページングで使用されま...
問題を見つける上位の SQL ステートメントを取得すると、DB が大量のselect @@sessi...
ユニアプリアプレットはWeChatでも同様のドロップダウン問題を抱えることになる解決策は、app.v...
全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できます...
1. オーバーフローOverflow はオーバーフロー(コンテナ)です。コンテンツがコンテナを越える...
ユニークな「About」ページ自分を他の人たちと差別化する素晴らしい方法は、本当にユニークな自己紹介...
1. 古い仮想DOMと新しい仮想DOMを比較し、まずキーが同じかどうかを確認します。 2. 引き続...
(Web ページの読み込み中に、コンテンツが多すぎて読み込みと待機が続くことがあります。このとき、...
序文:私は仕事柄、オンラインライブストリーミングの分野に携わっており、ビデオの再生やダウンロードには...
目次1. appIDの申請と設定1. appidの取得方法2. AppIDの設定2. 基本的なユーザ...
背景tomcat によって生成された catalina.out ログ ファイルが分割されていない場合...
目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...