この記事では、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 ページングクエリ方法とその最適化の提案
この記事では、簡単なショッピングフォームを実装するためのJavaScriptの具体的なコードを参考ま...
1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...
この記事はWindows 10のシステム環境をベースに、Reactの学習と使用について説明しています...
序文多くの MySQL テスト シナリオでは、テスト用に一部のテスト データを手動で生成する必要があ...
最近、あるプロジェクトに取り組んでいたとき、自分のプロジェクトでは CSS3 のアニメーション技術を...
dockerfile またはコンテナ内で yum を実行すると、エラーが報告され、ソースが見つかりま...
1 メソッドは、データをサーバーに送信する方法を指定するプロパティです。 2 post と get ...
mysql5.7.18の解凍版はmysqlサービスを起動します。具体的な内容は以下のとおりです。 1...
Linuxにフラッシュをインストールする方法1. Flashの公式サイトにアクセスし、ダウンロードを...
プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...
MySQLマルチインスタンスとは簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の...
実施原則メイングラフィックは、背景と前景の 2 つの要素で構成されています。次のサンプルコードでは、...
この記事では、MySQL 5.7.20のインストールと設定方法を参考までに紹介します。具体的な内容は...
目次序文一般的な方法1. 親コンポーネントを介して子コンポーネントの発行イベントをリッスンしてpro...
◆お気に入りに追加例示するクリックすると、ブラウザのお気に入りメニューにウェブサイトが追加されます...