最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみると、ブラウザのスクロールバーでは幅と位置を変更できないことがわかりました。自分で書くしかありませんでした。まず、スクロールバーのスタイル <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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Centos7 Zabbix3.4 メールアラーム設定(メール内容がxx.bin添付ファイルになる問題の解決)
>>: システム エラー 1067 のため、MySQL 5.6 解凍バージョン サービスを開始できません
今日の開発環境では、速いほど良いです。 「迅速なアプリケーション開発」、「アジャイル ソフトウェア開...
実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...
結合の種類1. 内部結合: 結合関係を持つ 2 つのテーブル内のフィールドは、結合関係を満たすレコー...
トリガー メソッドを使用できます。JavaScript にはネイティブのトリガー関数はありません。自...
多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...
コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...
ハイパーリンクの下線を削除するには、スタイルシート CSS を使用する必要があります。当面は CSS...
目次1.setInterval() 2.タイムアウトを設定する() 1.setInterval()指...
要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...
目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...
目次1. Docker分散lnmpイメージ生成1. Nginx、MySQL、PHPコンテナを実行する...
必要:公式サイトのリソースサーバーは確かに1つのインスタンスでは使えず、複数のインスタンスを一緒に使...
1. まず、2つ以上の隣接する通常フローブロック要素の垂直マージンの崩壊を引き起こす原因を知る必要が...
1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...