この記事では、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. 背景: 2. デザインのアイデア: 3. 起動スクリプトを書く4. イメージを構築する5....
1. セレクターを調整するコンビネータを使用すると、セレクターの説明をより正確に記述できます (C...
この記事では、WindowsでのMySQL 8.0.12のインストール手順と使用方法のチュートリアル...
目次Linux - ファイル記述子、ファイルポインタ、インデックスノード1. Linux - ファイ...
まずMySQLのインストールMySQLソフトウェアをダウンロードし、インストールパスを変更しますMy...
この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...
最近、Vue プロジェクトではデータをリアルタイムで更新する必要があります。折れ線グラフは 1 秒ご...
以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...
個人的な実装のスクリーンショット:インストール: npm インストール vue-esign --sa...
text-fill-color とは何を意味しますか?文字通りの意味から言えば、「テキストの塗りつぶ...
環境: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-glibc2.5...
Linux システムには、ファイル共有を解決するために使用できるリンク ファイルと呼ばれる種類のファ...
目次01 レプリカセットアーキテクチャ02 MySQL Shellの紹介とインストール03 My...
目次1. Reactの基本的な理解1. はじめに2. Reactの特徴3. Reactが効率的な理由...