ホームページ >ウェブフロントエンド >jsチュートリアル >固定されたスクロール可能な子要素が端に達したときに親要素がスクロールしないようにするにはどうすればよいですか?

固定されたスクロール可能な子要素が端に達したときに親要素がスクロールしないようにするにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-27 01:36:30812ブラウズ

How to Prevent Parent Element Scrolling When a Fixed and Scrollable Child Element Reaches Its Edge?

子がエッジに達したときに親要素のスクロールを防止する

親内で固定要素とスクロール可能な要素を利用する場合、その要素を制限することが望ましい場合があります。子要素が上部または下部に到達したときの親のスクロール。この問題は、子要素内でスクロールすると親要素が引き継ぎ、バックグラウンドで不要なスクロールが発生する場合に発生します。

試みられた解決策とその制限

最初は、イベント.stoppropagation() メソッドは、イベントの伝播を停止するために使用されました。ただし、伝播が依然として発生するため、この方法は効果的ではないことが判明しました。

包括的なソリューション

より効果的なソリューションには、jQuery を使用してマウスホイール イベントを処理することが含まれます。このソリューションでは、wheelDelta プロパティを利用します。正の値は上へのスクロールを示し、負の値は下へのスクロールを示します。

スクリプトの詳細な説明は次のとおりです:

  1. イベント処理: jQuery コードは、「.Scrollable」クラスを持つ要素の「DOMMouseScroll」イベント (Firefox の場合) と「mousewheel」イベント (他のブラウザの場合) の両方をリッスンします。
  2. スクロール方向の検出: デルタ値はスクロール方向を決定するために使用されます。
  3. デフォルト アクションの防止: スクロールを停止する関数が定義されています。
  4. エッジ ケース チェック: スクリプトは、スクロールがスクロール可能な要素の最小位置または最大位置を超えるエッジ ケースをチェックします。
  5. スクロール位置の調整: エッジ ケースが検出された場合、スクリプトは設定を行います。スクロール可能な要素のscrollTop値を0(上)またはscrollHeight(下)に設定します。
  6. イベントのキャンセル: 防止関数が実行されてイベントを完全にキャンセルし、イベントが確実にキャンセルされるようにします。

このソリューションを利用すると、使用しているブラウザに関係なく、親要素内の不要なスクロールを効果的に防ぐことができます。

以上が固定されたスクロール可能な子要素が端に達したときに親要素がスクロールしないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。