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 ロック解除とロックテーブルの紹介

推薦する

ノードをMySQLデータベースに接続する際に発生する問題と解決策

今日、MySQL の新しいバージョン (8.0.21) をインストールしましたが、ノード フレームワ...

Dockerfile echoは、指定されたファイル内の複数行のテキストを実装する方法を指定します。

Dockerfile内の指定されたファイルに複数の行を追加します。echoの後の「$」記号に注意し...

Vue で HTML 5 ドラッグ アンド ドロップ API を使用する方法

ドラッグ アンド ドロップ API は、ドラッグ可能な要素を HTML に追加し、ドラッグ可能な豊富...

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

ウェブサイトアイコンを追加するにはどうすればいいですか?

最初のステップは、アイコン作成ソフトウェアを準備することです。まず、いわゆるアイコンは拡張子 .ic...

水平ヒストグラムを作成するための MySQL ソリューション

序文ヒストグラムは、RDBMS によって提供される基本的な統計情報です。最も一般的に使用されるのは、...

MySQL の挿入ステートメントの使用実体験

目次1. 挿入のいくつかの構文1-1. 通常の挿入文1-2. 挿入または更新1-3. 挿入または交換...

MySQLテクノロジーにおけるInnoDBロックの詳細な説明

目次序文1. ロックとは何ですか? 2. InnoDBストレージエンジンのロック2.1 ロックの種類...

LeetCode の SQL 実装 (197. 気温上昇)

[LeetCode] 197.気温上昇Weather テーブルが指定されている場合、前の日付 (昨...

Baidu Maps を Web ページに埋め込み、Baidu Maps API を使用してマップをカスタマイズする詳細な手順

ウェブページにBaiduマップを挿入するBaidu Maps を自分の Web ページに追加したい場...

CSS3 で高さと幅を不定にして垂直と水平に中央揃えするいくつかの方法

1. フレックスレイアウト 。父親 { ディスプレイ: フレックス; コンテンツの中央揃え: 中央;...

MySQL パフォーマンス ストレス ベンチマーク ツール sysbench の使い方の紹介

目次1. sysbenchの紹介#プロジェクトダウンロードアドレス: 2. Sysbenchのインス...

CSS の一部のプロパティの前には「*」または「_」が付きます。

CSS の一部のプロパティの前には「*」または「_」が付きます。さまざまなブラウザを識別する例えば...

mysql5.6 マスタースレーブ設定と非同期の問題の詳細な説明

目次1. MySQL マスタースレーブレプリケーションの原理2. MySQLのコンパイルとインストー...

HTMLページ間でパラメータを渡すフロントエンド方式の詳細な説明

プロジェクトでよくある状況として、案件リストなどのリストが存在することがあります。リスト内の項目をク...