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

推薦する

Vue 画像切り抜きコンポーネントのサンプルコード

例:ヒント:このコンポーネントはvue-cropperの二次パッケージに基づいていますプラグインをイ...

CSS は Alibaba ベクター ライブラリを使用して、対応する位置に見栄えの良いアイコン効果をすばやく追加します (サンプル コード)

Alibaba ベクターアイコンライブラリにアクセスAlibaba ベクターアイコンライブラリ好き...

IIS7 IIS8 リバースプロキシルールの記述、インストール、構成方法

目的: ステーションAをステーションBのセカンダリディレクトリとして扱うのように: http://w...

WeChatアプレットの世界的な状況の詳細な説明

序文WeChat アプレットでは、App.js の globalData を中間ブリッジとして使用し...

Linux での MySQL のインストールに関する詳細なチュートリアル

1. MySQLサービスをシャットダウンする# service mysqld stop 2. rpm...

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

MySQL インストール ファイルには、msi 形式と zip 形式の 2 種類があります。クリック...

Centos7 に yum を使用して MySQL をインストールし、リモート接続を実現する方法

Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...

Nginxを再コンパイルしてモジュールを追加する方法

Nginx をコンパイルしてインストールするときに、http_ssl_module などの一部のモジ...

CSS のサイズ単位についての簡単な説明

ブラウザの互換性はどんどん良くなってきています。モバイル端末は基本的にすべてWebKitベースです。...

jQueryは時間セレクタを実装する

この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...

MySQLストアドプロシージャを変更する詳細な手順

序文実際の開発では、ビジネス要件が変更されることが多いため、ストアド プロシージャの特性を変更するこ...

MySQLインデックスベースのストレステストの実装

1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...

MySQL クエリ キャッシュのグラフィカルな説明

目次1. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...

CocosCreator ソースコードの解釈: エンジンの起動とメインループ

目次序文準備行く!文章プロセスを開始するメインループまとめ要約する序文準備皆さんは、こんなことを考え...