Vue は div の高さをドラッグ可能にします

Vue は div の高さをドラッグ可能にします

この記事では、divのドラッグ可能な高さを実現するためのVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

ここに、ページ div のドラッグ機能を実現できる既製のデモがありますが、効果が私の希望とは少し異なるため、実際のニーズに合わせて再度修正しました。まずは、現在のデモ効果を見てみましょう。

<テンプレート>
  <div id="eagleMapContainer" style="border: 1px solid red;overflow-y: auto;" title="">
    <div id="tz" @mousedown="dragEagle" style="border: 1px solid blue;">
      <div title="ドラッグしてサイズを変更" id="move_tz" style="border: 1px solid green;"></div>
    </div>
  </div>
</テンプレート>

<スクリプト>
  エクスポートデフォルト{
    名前: "eagleMap",
    データ() {
      戻る {}
    },
    メソッド: {
      ドラッグイーグル: 関数(e) {
        var targetDiv = document.getElementById('eagleMapContainer'); 
        //クリックされたときにマップ コンテナーの幅と高さを取得します。
        var targetDivHeight = targetDiv.offsetHeight;
        var startX = e.clientX;
        var startY = e.clientY;
        var _this = これ;
        document.onmousemove = 関数 (e) {
          e.preventDefault();
          //マウスのドラッグの幅と高さを取得します。絶対値を取得します。var distX = Math.abs(e.clientX - startX);
          var distY = Math.abs(e.clientY - startY);
          // 上方向にドラッグ:
          (e.clientY < startY) の場合 {
            targetDiv.style.height = targetDivHeight + distY + 'px';
          }
          // 下にドラッグ:
          (e.clientX < startX && e.clientY > startY) の場合 {
            targetDiv.style.height = (targetDivHeight - distY) + 'px';
          }
          (parseInt(targetDiv.style.height)> = 300)の場合{
            targetDiv.style.height = 300 + 'px';
          }
          (parseInt(targetDiv.style.height)<= 150)の場合{
            targetDiv.style.height = 150 + 'px';
          }
        }
        document.onmouseup = 関数(){
          ドキュメント.onmousemove = null;
        }
      }
    },
  };
</スクリプト>

<スタイルスコープ>
  #イーグルマップコンテナ{
    位置: 絶対;
    左: 13%;
    下: 10px;
    zインデックス: 200;
    オーバーフロー: 非表示;
    可視性: 可視;
    幅: 200ピクセル;
    高さ: 200px;
  }

  #tz {
    位置: 絶対;
    右: 1px;
    上: 1px;
    幅: 27px;
    高さ: 20px;
    カーソル:ne-resize;
    zインデックス: 200001;
    背景画像: url("");

  }

  #tz:ホバー{
    背景色: #666;
  }

  #move_tz {
    位置: 絶対;
    右: 0px;
    上: 0px;
    幅: 27px;
    高さ: 20px;
    カーソル:ne-resize;
    zインデックス: 100;
    背景画像: url("");
    背景位置: 0px 0px;
  }
</スタイル> 

しかし、その効果は私が望んでいたものとは少し違ったの​​で、少し修正する必要がありました。

私が望む効果は、小さな四角いリストが多数含まれる div があることです。スクロールが制限を超えて設定されているため、スクロール バーを使用して div にドラッグを追加し、高さを変更します。

次のステップは、上記のデモを変換することです。簡単にするために、コードに移動するだけです。

上にドラッグする必要がある div の下に div を追加し、この div をクリックしてドラッグ機能を開始します。

<!-- 小さなボックスをドラッグ アンド ドロップします -->
    <div id="tz" @mousedown="dragEagle">
      <div title="ドラッグしてサイズを変更" id="move_tz"></div>
    </div>

ドラッグに応じて高さが変化する div の ID を「fuDiv」として設定し、メソッドを記述する必要があります。

// ドラッグイーグル(e) {
        var targetDiv = document.getElementById('fuDiv');
        //クリックされたときにマップ コンテナーの幅と高さを取得します。
        var targetDivHeight = targetDiv.offsetHeight;
        var startX = e.clientX;
        var startY = e.clientY;
        var _this = これ;
        document.onmousemove = 関数 (e) {
          e.preventDefault();
          //マウスのドラッグの幅と高さを取得します。絶対値を取得します。var distY = Math.abs(e.clientY - startY);

          // 上方向にドラッグ:
          (e.clientY < startY) の場合 {
            targetDiv.style.height = targetDivHeight - distY + 'px';
          }
          // 下にドラッグ:
          e.clientX < startX && e.clientY > startY) の場合 {
            targetDiv.style.height = (targetDivHeight + distY) + 'px';
          }
          (parseInt(targetDiv.style.height)> = 320)の場合{
            targetDiv.style.height = 320 + 'px';
          }
          (parseInt(targetDiv.style.height)<= 160)の場合{
            targetDiv.style.height = 160 + 'px';
          }
        }
        document.onmouseup = 関数(){
          ドキュメント.onmousemove = null;
        }
      },

次に、それらの CSS スタイルを設定します。実際、この部分はカジュアルであり、自分の好みに応じて行うことができます。

  #tz {
    幅: 100%;
    高さ: 5px;
    カーソル: s-resize;
    zインデックス: 200001;
  }
  
  #move_tz {
    幅: 100%;
    高さ: 5px;
    カーソル: s-resize;
    zインデックス: 100;
    背景画像: url("");
    背景位置: 0px 0px;
  }

最終結果:

効果は特に良いわけではなく、最適化に値する部分がまだたくさんありますが、今は書きません。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueでドラッグ可能なコンポーネントを実装する方法
  • Vueはドラッグ可能なダイアログボックスを実装します
  • Vue の一時停止されたドラッグ可能なフローティング ボタンのサンプル コード
  • Vueは、element-uiダイアログボックスのドラッグ可能な機能を実装します。
  • Vue プロジェクトで el-dialog コンポーネントのドラッグ可能な効果を実装する

<<:  VMware vCenter の不正な任意ファイルアップロードの脆弱性 (CVE-2021-21972) について

>>:  Web ページの HTML コードの説明: 順序付きリストと順序なしリスト

推薦する

LinuxでTomcatのポート番号を変更する方法

ここには複数の Tomcat があります。それらを同時に使用する場合は、ポート番号を別の番号に変更す...

Windows Server 2019 のインストール (グラフィカル チュートリアル)

Windows Server 2019 は、Microsoft が公式にリリースした最新のサーバー...

ReactにおけるuseRefの具体的な使い方

React の経験がある人なら、コンポーネントインスタンスオブジェクトや DOM オブジェクトを取得...

HTMLで境界線を設定する3つの方法の詳細な説明

HTML で境界線を設定する 3 つの方法 境界線の幅: 1px 2px 2px; 境界線のスタイル...

HTML 5.1 学習: 14 の新機能とアプリケーション例

序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...

FirefoxのWeb開発者を使用してWebページのスタイルを無効にする方法

前提条件: Web開発者プラグインがインストールされている操作手順: [ツール] -> [We...

HTML+CSS+JavaScript でシンプルな三目並べゲームを作成する

目次HTMLの実装CSSを追加Javascript部分の実装デモアドレス HTMLの実装まず、hea...

CentOS7にPHP7 Redis拡張機能をインストールする方法

導入前回の記事では、Redis をインストールして設定しましたが、まだ終わりではありません。PHP ...

JavaScript のディープコピーの落とし穴

序文以前、ある会社の面接に行ったとき、面接官から「オブジェクトを深くコピーするにはどうすればよいです...

Vue3 ドキュメント クイックスタート

目次1. セットアップ1. セットアップ関数の最初のパラメータ - props 2. 文脈2. セッ...

CocosCreator Huarongdaoデジタルパズルの詳しい説明

目次序文文章1. パネル2. 華容島ソリューション3. コード4. 注記序文華容路とは何ですか? 誰...

MySQLインデックスが使用されない状況のまとめ

MySQL のインデックスの種類一般的に、次の 4 つのカテゴリに分類できます。通常のインデックス:...

VirtualBox の仮想ディスク vdi ファイルの容量を拡張する方法 (グラフィック チュートリアル)

VirtualBoxのインストールディレクトリを見つけます。ディレクトリ内には容量を拡張するために...

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

JavaScript 遅延読み込みの詳細な説明

目次遅延読み込みCSS スタイル: HTML部分:スクリプト部分:要約する遅延読み込み名前の通り、私...