Vueはスクロールバースタイルを実装します

Vueはスクロールバースタイルを実装します

ここに画像の説明を挿入

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみると、ブラウザのスクロールバーでは幅と位置を変更できないことがわかりました。自分で書くしかありませんでした。まず、スクロールバーのスタイル

<div class="scrollBar" v-if="roleList.length > 5">
        <div
          クラス="ボックス"
          @mousedown="移動"
          v-bind:style="{ 幅: アクティブ幅 + 'px' }"
        </div>
      </div>

スタイル

.スクロールバー{
  幅: 500ピクセル;
  高さ: 6px;
  背景: #d5dbf5;
  マージン: 0 自動;
  上マージン: 72px;
  境界線の半径: 4px;
  位置: 相対的;

  。箱 {
    幅: 30ピクセル;
    高さ: 100%;
    背景: #fff;
    境界線の半径: 4px;
    位置: 絶対;
    左: 0;
  }
  .box:hover {
    カーソル: ポインタ;
  }
}

スクロールエリアのスタイルはここには書かれていません

1 まずスクロールバースライダーの幅です

マウント() {
    //スクロール領域の幅 ここではユーザー リストをトラバースしているので、リストの長さを取得します * 各 li の幅が合計幅です let bgWidth = this.$refs.liList.clientWidth * this.roleList.length;
    // 表示領域の幅 1065 これは、上の画像の白い背景ボックスの幅です // スライダーの幅 500 は、スクロール バーの幅です この幅は、スライダーがスライドできる距離を取得するために計算されます。これについては、後で説明します this.activewidth = 500 * (1065 / bgWidth);
  },

2 スライダーにマウスイベントを追加する

移動する{
      // ターゲット要素を取得します。let odiv = e.target;
      //スクロール領域
      //要素に対するマウスの位置を計算します。let disX = e.clientX - odiv.offsetLeft;
      // スクロールバーがスクロールできる距離 let viewArea = 500 - this.activewidth;
      //スクロール領域の幅 let bgWidth = this.$refs.liList.clientWidth * this.roleList.length;
      ドキュメント.onmousemove = (e) => {
        // マウスが押されて移動されたイベント // 要素に対するマウスの位置をマウスの位置から減算して、要素の位置を取得します。let left = e.clientX - disX;
        //left < 0 はスライダーが左端に到達したことを意味します //または left > viewArea はスライダーが右端に到達したことを意味しますif (left < 0 || left > viewArea) {
          //console.log("終了しました");
          // このとき、イベントをクリアする必要があります。そうしないと、スライダーがスクロール バー領域から外れてしまいます。 document.onmousemove = null;
        } それ以外 {
         //スライダーのスライド距離 odiv.style.left = left + "px";
          //スクロール領域のスライド距離 = スクロール領域の幅 * (スライダーのスライド距離 / 500)
          this.$refs.ScrollArea.style.left =
            "-" + bgWidth * 左 / 500 + "px";
        }
      };
      ドキュメント.onmouseup = (e) => {
        ドキュメント.onmousemove = null;
        ドキュメント.onmouseup = null;
      };
    },

これで、Vue でスクロール バー スタイルを実装する方法に関するこの記事は終了です。Vue でスクロール バーを実装する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueは2つのエリアスクロールバーの同期スクロールを実装します
  • Vue.js デスクトップ カスタム スクロール バー コンポーネント 美化 スクロール バー VScroll
  • Vueはスクロールバーを記憶し、ドロップダウンの読み込みを実装するのに最適な方法です
  • Vueでスクロールバーのスタイルを変更する方法
  • Vue はデータのレンダリング後にスクロールバーの位置制御を実装します (推奨)
  • Vue スクロールバープラグインの実装コード
  • Vueフレームワークでカスタムスクロールバー(easyscroll)を実装する方法
  • Vue でスクロールバーのスタイルを変更する方法

<<:  Centos7 Zabbix3.4 メールアラーム設定(メール内容がxx.bin添付ファイルになる問題の解決)

>>:  システム エラー 1067 のため、MySQL 5.6 解凍バージョン サービスを開始できません

推薦する

vue3 における vuex と pinia の落とし穴

目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...

JavaScript インタビュー: 配列の平坦化メソッドを実装する方法

目次1 配列のフラット化とは何ですか? 2 JS標準ライブラリの配列フラット化メソッド3 フラットメ...

MySQL テーブル結合クエリでグループ化と重複排除を実装する例

目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...

Mysqlは日付範囲の抽出方法を指定します

データベースを操作する過程では、いくつかの指標を日付別にまとめたり、一定期間内の合計金額をカウントし...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

Dockerでコンテナを作成するときにコンテナIPを指定する実装例

Docker はコンテナを作成するときに、デフォルトでブリッジ ネットワークを使用し、IP アドレス...

WangEditor リッチ テキスト コンポーネントを Angular でカプセル化する方法

リッチ テキスト コンポーネントは、Web プログラムで、特にブログやフォーラムなどの Web サイ...

MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明

1. クラスター化インデックステーブル データはインデックスの順序で保存されます。つまり、インデック...

docker run 起動パラメータ コマンドを表示する方法 (推奨)

runlike を使用してコンテナの docker run 起動パラメータを表示します。 pipを...

Lua モジュールを使用して WAF を実装する Nginx の原理の分析

目次1. WAFの背景2. WAFとは3. 動作原理4. WAF機能5. WAFと従来のファイアウォ...

mysql-8.0.17-winx64 のデプロイメント方法

1. 公式サイトからmysql-8.0.17-winx64をダウンロードし、Zipファイル形式を選択...

MySQLのexecute、executeUpdate、executeQueryの違い

execute、executeUpdate、executeQuery の違い (およびそれらの戻り値...

ウェブデザイナーのウェブデザイン学習経験とスキルのまとめ

会社の影響力が拡大し、製品が改良され続けるにつれて、関連するイメージデザインもそれに追いつき、徐々に...

aタグ疑似クラスの機能と記述順序は何ですか?

a タグ疑似クラスの役割: 「:link」: 訪問されていないタグの状態。 「:visited」: ...

JavaScript の基礎: スコープ

目次範囲グローバルスコープ関数のスコープもし、スイッチ、のために、その間ブロックスコープスコープチェ...