better-scrollプラグインのスライドできないバグについて(2021年プラグインで解決)

better-scrollプラグインのスライドできないバグについて(2021年プラグインで解決)

より良いスクロールの原則

親コンテナーであるため、ラッパーの高さはコンテンツのサイズに応じて増加します。そして、
コンテンツの高さが親コンテナの高さを超えていない場合は、スクロールできません。親コンテナの高さを超えると、コンテンツ領域をスクロールできるようになります。
BetterScrollはデフォルトでコンテナ(ラッパー)の最初の子要素(コンテンツ)のスクロールを処理し、他の要素は無視されるため、次のページ構造も与えられます。

<div class="wrapper">
 <ul class="content">
  <li>...</li>
  <li>...</li>
  ...
 </ul>
 <!-- ここに他の DOM を置くこともできますが、スクロールには影響しません -->
</div>

ですので、ここでは最も重要な点についてのみお話します。 ! !

圖片需要加載ため、better-scroll の初期化のタイミングは非常に重要です。初期化時に、親要素と子要素の高さと幅が計算されるからです。画像がまだ読み込まれていない状態で初期化すると、実際に計算された高さと実際の高さに大きな差が生じます (ネットワーク速度も影響します...)

これが、すべてのユーザーがスクロールできない最大の理由です。

数日前にこの問題に遭遇し、better-scroll ドキュメントにアクセスできなくなりました。github のドキュメントは、大まかにしか使えませんでした。解決策を探すのに丸一日かかりました。インターネット上にはさまざまな方法が出てきました。最適な解決策は次のとおりです。

プラグイン経由: better-scroll/observe-dom

BetterScroll は、スクロール可能な高さまたは幅を動的に計算します。高さまたは幅が変更されたときに、refresh() メソッドを手動で呼び出す必要はありません。プラグインは MutationObserver を介してこれを実行します

現在のブラウザが MutationObserver をサポートしていない場合は、setTimeout を使用するようにダウングレードされます。

使用

依存関係をインストールする npm install @better-scroll/observe-dom

'@better-scroll/core' から BScroll をインポートします。
'@better-scroll/observe-dom' から ObserveDom をインポートします。
BScroll.use(ObserveDom)

const bs = 新しいBScroll('.wrapper', {
 DOMを観察: 真
})

この問題には多くの解決策がありますが、インターネット上の多くの記事では明確に説明されていません。このプラグインを使用してください。

別の解決策としては、画像の読み込みを監視し、refresh()を呼び出して高さを再計算することです。

Vueはimgタグを使用し、 @load="定義一個方法"を使用して画像読み込みイベントを監視します。画像が読み込まれている限り、定義したメソッドが1回呼び出されます。

最後に、メソッド内に this.scroll.refresh() を記述して、画像を読み込み、一度更新して高さを再計算します。同時に、頻繁な繰り返し呼び出しによって発生するさまざまな問題を回避するために、手ぶれ補正機能を使用する必要があります。

以上でbetter-scrollプラグインのスライド不可についての記事は終了です(2021年にプラグインで解決)。better-scrollプラグインのスライド不可に関する関連コンテンツは、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします!

以下もご興味があるかもしれません:
  • Vueスクロールプラグインbetter-scrollの使い方の詳しい説明
  • Angularでbetter-scrollプラグインを使用する方法
  • vue better-scroll スクロールプラグインの詳細な説明
  • vue better-scrollプラグインの使い方の詳細な説明
  • Vueスクロール軸プラグインbetter-scrollの使い方の詳しい説明

<<:  NavicatでMySQLビッグデータをインポートする際のエラーの解決方法

>>:  MYSQL ロック解除とロックテーブルの紹介

推薦する

CentOS 8.4 での Docker パッケージのオフラインインストールの問題について

使用する仮想マシンは、サーバー環境をシミュレートする CentOS 8.4 です。外部ネットワークに...

WebWorkerはJavaScriptサンドボックスの詳細をカプセル化します

目次1. シナリオ2. IJavaScriptShadowboxを実装する2.1 メインスレッドの実...

HTML 左、中央、右の適応レイアウト (calc css 式を使用)

最新の HTML 標準には、レイアウトを計算するために使用できる calc CSS 式があります。し...

リストループスクロールを実現するための HTML+CSS+JavaScript サンプルコード

説明: 指定された時間内に前のノードのコンテンツを置き換えるタイマーを設定します。 1. キーコード...

MySQL 8.0.18 のインストールと設定方法のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

JavaScript フロントエンドのタイムアウト非同期操作に最適なソリューション

目次コードの実行に長い時間がかかる場合はどうなりますか? Axiosにはタイムアウト処理機能が搭載さ...

JavaScript 手ぶれ補正のケーススタディ

原理手ぶれ補正の原理は、イベントをトリガーすることはできますが、イベントがトリガーされてから n 秒...

Apache FlinkCEP でタイムアウトステータス監視を実装するための詳細な手順

CEP - 複合イベント処理。ご注文後、一定期間内にお支払いの確認が取れませんでした。タクシーの配...

Vue サーバーに js 構成ファイルをインポートする方法

目次背景成し遂げるvue-cli2.0での設定方法の補足要約する背景プロジェクトにはローカル構成ファ...

CentOS7でルートパスワードをリセットする方法

レンガを移動するプロセスでは、さまざまな環境および構成の問題があり、毎回異なるエラーが発生します。 ...

Windows での MySQL コミュニティ サーバー 8.0.16 のインストールと構成方法のグラフィック チュートリアル

最近、MySQL関連の構文をよく見かけます。また、MySQLストアドプロシージャの書き方も学びたいの...

Vue でスクロールバーのスタイルを変更する方法

目次まず、スクロール バーのスタイルを変更するには、疑似要素-webkit-scrollbarを使用...

訪問者を惹きつけるウェブサイトコンテンツを作成する14の方法

ネットサーフィンをしていると、私の注意を引こうとする美しいグラフィックでいっぱいの Web サイトを...