Vue は better-scroll を使用して水平スクロール方法の例を実現します

Vue は better-scroll を使用して水平スクロール方法の例を実現します

1. スクロールの実装原理

better-scroll のスクロール原理は、ブラウザのネイティブスクロール原理と同じです。子ボックスの高さが親ボックスの高さより大きい場合、垂直スクロールが発生します。同様に、子ボックスの幅が親ボックスの幅より大きい場合、水平スクロールが発生します。

2. スクロールしやすいHTML構造

まず、better-scroll の一般的な HTML 構造を見てみましょう。

<div class="wrapper">
  <ul class="content">
    <li>...</li>
    <li>...</li>
    ...
  </ul>
</div>

BetterScroll は外側のラッパー コンテナーに適用され、スクロール部分がコンテンツになります。 BetterScroll は、デフォルトでコンテナー (ラッパー) の最初の子要素 ​​(コンテンツ) のスクロール処理を実行することに注意してください。つまり、他の要素は無視されます。

3. Vueでbetter-scrollを使用する

npm install better-scroll --save //npm install import BScroll from 'better-scroll' //コンポーネントファイルにbetter-scrollを導入する
<テンプレート>
   /* 水平スクロール */
   /* これは親ボックスです */
<div
        クラス="wrapper_box"
        スタイル="min-height:100vh;
        「
        ref="ラッパー"
        v-else
      >
      /* これはサブボックス、スクロール領域です*/
        <div class="content" ref="wrapperChild">
          <div
            v-for="(item, index) in currentImgList"
            :key="インデックス"
            クラス="imgItem"
          >
            <img :src="item.img" class="img" style="margin: 0 10px;" />
          </div>
        </div>
      </div>
</テンプレート>
<スクリプト>
 「better-scroll」からBScrollをインポートします。
 エクスポートデフォルト{
  データ() {
    戻る {
      現在の画像リスト: [
        { 画像: require("../../assets/image/zzb_1.png") },
        { 画像: require("../../assets/image/zzb_2.png") },
        { 画像: require("../../assets/image/zzb_3.png") }
      ]、
    };
  },
  マウント() {
    this.slide_x(); //水平スクロール},
  メソッド: {
     // 初期化_initScroll() {
      スクロールすると
        this.scroll = new BScroll(this.$refs.wrapper, { // BScrollをインスタンス化し、2つのパラメータを受け入れます。最初のパラメータは親ボックスのDOMノードです。startX: 0, /// 詳細な設定情報については、better-scrollの公式ドキュメントを参照してください。ここでは繰り返しません。click: true,
          スクロールX: true、
          scrollY: false, // 垂直スクロールを無視するeventPassthrough: "vertical",
          useTransition: false // 高速スライドによって引き起こされる異常なリバウンドを防ぐ});
      } それ以外 {
        this.scroll.refresh(); //DOM 構造が変更された場合は、このメソッドを呼び出して再計算し、通常のスクロール効果を確保します}
    },
    // 幅を計算する_calculateWidth() {
      // クラス名imgItemのタグを取得します。letrampageList = this.$refs.wrapperChild.getElementsByClassName(
        「画像アイテム」
      );
      // 開始幅を設定します。let initWidth = 0;
      // ラベルをトラバースする for (let i = 0; i < rampageList.length; i++) {
        定数項目 = 暴走リスト[i];
        // 各ラベルの幅を追加します initWidth += item.clientWidth;
      }
      // スクロール可能な幅を設定します。this.$refs.wrapperChild.style.width = `${initWidth}px`;
    },
    スライドx() {
      this.$nextTick(() => { //this.$nextTick は、DOM がレンダリングされたことを確認するための非同期関数です。 this._initScroll(); // 初期化 this._calculateWidth(); // 幅を計算 });
    },
    },
   

};
</スクリプト>

元のプラグインの作者は次のように述べています:

4. 問題が発生する可能性のあるポイント:

  1. BScroll のインスタンス化を実行する前に、ページ DOM のレンダリングが完了するまで待つ必要があります。マウントされたフック関数で実行することをお勧めします。
  2. 子ボックスの幅が親ボックスの幅より大きい

やっと

これは、better-scroll プラグインの作者による記事です。better-scroll は本当に強力だとわかりました。

より良いスクロールとVueが出会うとき

Vue で better-scroll を使用して水平スクロールを実装する

これで、vue で better-scroll を使用して水平スクロールを実現する方法についての説明は終わりです。vue で better-scroll を使用して水平スクロールを実現する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはマーキースタイルのテキストの水平スクロールを実装します
  • Vue の better-scroll コンポーネントを使用して水平スクロール機能を実現する
  • Vueは、テキストが幅を超えたときに水平スクロールするようにマーキータグを置き換えます。
  • Vue でメッセージが水平方向にスクロールすると setInterval がクリアされない問題と解決策
  • Vue.js+cube-ui(スクロールコンポーネント)は、見出し効果に似た水平スクロールナビゲーションバーを実現します。
  • 掲示板のテキストを上下にスクロールする効果を実現するVueサンプルコード
  • Vueはスクロールイベントを監視してスクロール監視を実装します
  • Vue.js の実践: スクロール イベントをリッスンして動的アンカー ポイントを実装する
  • メッセージのシームレスなスクロール効果を実現する Vue のサンプルコード
  • Vue で画面横スクロールアナウンス効果を実現

<<:  MySQL で絵文字表現を挿入できない理由と解決策

>>:  Dockerの一般的なコマンドとヒントのまとめ

推薦する

sshとは何ですか?使い方は?どのような誤解があるのでしょうか?

目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...

Vue-Routerのルート設定の詳しい説明

目次導入ルート内のオブジェクト属性パス: 文字列コンポーネント: コンポーネント | () =>...

Windows で MySQL 5.7.17 をインストールし、エンコードを utf8 に設定する方法

ダウンロードMySQL 公式ダウンロード、Windows (x86、64 ビット)、ZIP アーカイ...

Linuxシステムにmsfをインストールするプロセスの詳細な説明

または、インストールプロセスを自分で書き留めてください。私のサーバーシステムはAliyun Linu...

Easyswoole ワンクリック インストール スクリプトとパゴダ インストール エラー

よくある質問easyswoole を初めて使用する場合は、次のような問題に遭遇することがよくあります...

CSS3 を使用した背景ぼかし効果の 3 つの例

導入から始めず、いきなり本題に入りましょう。通常の背景ぼかし効果は次のとおりです。 プロパティを使用...

レアタグフィールドセットと凡例の使用方法の詳細な説明

<fieldset>と<legend>については、ほとんどの人はおそらく馴染...

Mysql 5.7.19 無料インストール版 (64 ビット) の設定方法に関する詳細なチュートリアル

公式サイトから mysql-5.7.19-winx64 をダウンロードします。これはシステムの 64...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

jQueryは何に使われるのですか?jQueryは実際にはjsフレームワークです

jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...

Ubuntuで顔認識ログインを実装するための完全な手順

1. Howdyをインストール: howdyプロジェクトアドレス sudo add-apt-repo...

MySQL 5.7 MGR シングルマスター決定マスターノード方式の詳細説明

当銀行のMGRは年末に開始されます。公式文書を読んだり、毎日テストを受けたりしなければなりません。毎...

Node.js で MySQL データベースにバッチデータを挿入する方法

プロジェクト(nodejs)では、一度に複数のデータをデータベースに挿入する必要があります。データベ...

Node.js パッケージ マネージャー npm の具体的な使用方法

目次目的npm init および package.json ファイルモジュールのインストールと管理モ...

MySQL 8.0.13 zipパッケージのインストール方法について

MySQL 8.0.13 にはデフォルトでデータ フォルダがあります。このフォルダを削除する必要があ...