2つのナビゲーションバーがあるページがあります。 最初のページはページの上部に固定されています。 ページの中央にある2番目のページは、スクロールすると「トップ・スティッキー」になります。divに到達したときに一番上に固定された要素を停止
第2ナビに入る直前に第1ナビを停止したいと思います。 2番目のナビゲーションバーをスクロールすると、このナビゲーションバーのみが表示され、1番目は上/消えたままになります。ここで
がある Fiddle私のhtml:
<body>
<div id="page">
<div class="fullscreen">
<h1>Zone fullscreen</h1>
</div>
<header class="navbar1">
<p>Navbar 1 : I am fixed but I want to stop just before Navbar2 !</p>
</header>
<div id="content">
<div class="navbar2">
<p>Navbar 2 : I become sticky on scroll</p>
</div><!--/navbarLoc-->
<div class="main-content">
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
</div><!--/content -->
</div><!--/page-->
</body>
CSS:
* {padding:0; margin:0;}
html, body, #page {height:100%;}
.fullscreen {height: 100%;background: red;position:relative; z-index:5;}
.fullscreen h1 {padding-top:180px;text-align:center;}
.navbar1 {position: fixed; left: 0; right: 0; top:10px;background:yellow;padding:5px;z-index:15;}
.navbar2 {background:green;padding:5px;z-index:20;}
.main-content {padding:10px;position:relative; z-index:10;}
.main-content p {font-size:50px;}
そして、JS:これはNavbar2はスティッキー作るためである
:
$(".navbar2").stick_in_parent({offset_top:40});
そして私は、このコードの一部、Navbar2に到達したときnavbar1は絶対にする、doesntの仕事が見つかりました:
function checkOffset() {
if($('.navbar1').offset().top + $('.navbar1').height() >= $('.navbar2').offset().top - 10)
$('.navbar1').css('position', 'absolute');
if($(document).scrollTop() + window.innerHeight < $('.navbar2').offset().top)
$('.navbar1').css('position', 'fixed'); // restore when you scroll up
$('.navbar1').text($(document).scrollTop() + window.innerHeight);
}
$(document).scroll(function() {
checkOffset();
});
をそしておそらく最良の解決策ではなく、直接CSSを適用するクラスを追加/削除するだろうか?
ご返信いただきありがとうございます!
あなたはnavbar1がnavbar2するには、ユーザーのスクロールまで固定することにしますか、そしてnavbar2は固定1になりますか?右@imudo –
はい、それはまさにそれです! – imudo