ホームページ > 記事 > ウェブフロントエンド > Position:sticky がブートストラップ フローティング レイアウトに遭遇したときの落とし穴記録
position:sticky
属性に初めて触れたとき、以前の多くの JS シーンがこの CSS 属性を使用して書き換えられることに気づきました。たとえば、Web サイトの右側にある多くの広告は、上にスクロールした後に修正する必要があります。これらは完全に粘着性のあるアプリケーションです。
今日お話したいのは、記事詳細ページの右側にあるディレクトリバーですが、ページが下にスライドすると、これもページ上部に固定されます。スクロールイベントをリッスンし、位置に基づいて判断するには、toggle 修正された解決策は、いくつかの理由により、スティッキーで書き直すことにしました。
これは数回のクリックで完了し、スクロール イベント リスナーを削除して、メニュー要素 .post-nav# に
position:sticky; top:0 スタイルを追加しました。 ##、しかし、うまくいきません!
overflow:hidden などを追加するなど、オーバーフロー属性を処理した可能性があると書かれていましたが、調べてみるとそうではありませんでした。
<!DOCTYPE html> <html> <head> <title></title> <link href="//cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet"> <style> body {font-size: 50px; font-weight: 900;} .main {height: 2000px; background: #eee} .menu {height: 200px; background: yellow} .ad {height: 200px; background: red; position: sticky; top: 0px;} .guess {height: 200px; background: blue;} </style> </head> <body> <p class="container"> <p class="row"> <p class="col-md-8 main">content</p> <p class="col-md-4"> <p class="menu">menu</p> <p class="ad">ad</p> <p class="guess">others</p> </p> </p> </p> </body> </html>しかし、問題はないと突然思いました。 Web サイトで使用されているブートストラップのバージョンが 3.x だったのを、バージョン 3.3.7 に変更したところ、問題が発生しました。 現時点では、4.x は flex レイアウトを使用していますが、3.x は依然として float フローティング レイアウトを使用しています。問題はここにあるはずです。 最終コード (この問題を参照):
<!DOCTYPE html> <html> <head> <title></title> <link href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <style> body {font-size: 50px; font-weight: 900;} .main {height: 2000px; background: #eee} .side {height: 2000px;} .menu {height: 200px; background: yellow} .ad {height: 200px; background: red; position: sticky; top: 0px;} .guess {height: 200px; background: blue;} </style> </head> <body> <p class="container"> <p class="row"> <p class="col-md-8 main">content</p> <p class="col-md-4 side"> <p class="menu">menu</p> <p class="ad">ad</p> <p class="guess">others</p> </p> </p> </p> </body> </html>は最初の質問に対応します。メニューは
.col-md-3 要素に属しているため、右側の
.col-md-3 は、左側の
.col-md-9 と高度に一致する必要があります:
$('.side').height($('.main').height())## というコード行を追加します。 # 左のコンテンツ領域で画像の読み込みが遅れているため、このコード行を継続的に実行する必要があります:
$(window).scroll(function() { $('.side').height($('.main').height()) // other code // ... })
要約: 上記はこの記事の全内容です。お役に立てば幸いです。誰もが学んでいます。関連チュートリアルの詳細については、
HTML ビデオ チュートリアル php 公共福祉トレーニング ビデオ チュートリアル以上がPosition:sticky がブートストラップ フローティング レイアウトに遭遇したときの落とし穴記録の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。