2014-10-30 84 views
11
<div id="header"></div> 
<div id="sticky"></div> 
<div id="section"></div> 
<div id="footer"></div> 

<style> 
    body { margin: 0px; background-color: #e3e3e3; } 
    #header { background-color: #cb5454; height: 140px; } 
    #sticky { background-color: #546bcb; height: 70px; } 
    #section { height: 1500px; } 
    #footer { background-color: #cb5454; height: 140px; } 
</style> 

這裏是我的代碼:http://jsfiddle.net/uaqh018d/在滾動過另一個div後,讓div粘到頁面頂部?

我想#sticky堅持到頁面頂部滾動過去的#header後。 我也想隱藏它直到卡住。然後,當滾動回到#header之後,它當然會再次不粘標籤。

我怎樣才能做到這一點?

回答

20

我會建議增加一個類#sticky當它準備好固定到屏幕的頂部時,然後在想要「取消粘貼」時刪除該類。然後你可以在CSS中操縱那個類。

例如一類fixed你把你的CSS如下:

#sticky { 
    display: none; 
    background-color: #546bcb; 
    height: 70px; 
} 
#sticky.fixed { 
    display: block; 
    position: fixed; 
    top: 0; 
    width: 100%; 
} 

然後你的jQuery是這樣的:

$(window).scroll(function() { 
    var distanceFromTop = $(this).scrollTop(); 
    if (distanceFromTop >= $('#header').height()) { 
     $('#sticky').addClass('fixed'); 
    } else { 
     $('#sticky').removeClass('fixed'); 
    } 
}); 

這裏有一個更新的FIDDLE

我也可以推薦一些jQuery淡入淡出或幻燈片效果(請參閱小提琴)。

+0

謝謝!我相信這樣會更有效率! – John 2014-10-30 22:01:30

+0

什麼是高度是動態的而不是已知的? – SearchForKnowledge 2015-01-16 21:43:48

+0

@SearchForKnowledge你的意思是粘頭的高度? http://jsfiddle.net/uaqh018d/40/ – bowheart 2015-01-17 15:46:38

5

您可以使用position: fixed和JS檢測,當用戶滾動這樣的:

$(document).scroll(function() { 
 
    //detect when user scroll to top and set position to relative else sets position to fixed 
 
    $("#sticky").css({ 
 
    "top": "0", 
 
    "position": $(this).scrollTop() > 140 ? "fixed" : "relative" 
 
    }); 
 
});
body { 
 
    margin: 0px; 
 
    background-color: #e3e3e3; 
 
} 
 
#header { 
 
    background-color: #cb5454; 
 
    height: 140px; 
 
} 
 
#sticky { 
 
    background-color: #546bcb; 
 
    height: 70px; 
 
    width: 100%; 
 
    position: fixed; 
 
} 
 
#section { 
 
    height: 1500px; 
 
} 
 
#footer { 
 
    background-color: #cb5454; 
 
    height: 140px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="header"></div> 
 
<div id="sticky"></div> 
 
<div id="section"></div> 
 
<div id="footer"></div>

參考

.scroll()

+0

它不工作。看:http://jsfiddle.net/uaqh018d/11/ – John 2014-10-30 21:41:33

+0

需要幫助,它不工作! – John 2014-10-30 21:51:02

+0

檢查這[[小提琴](http://jsfiddle.net/AlexChariz/uaqh018d/33/)幾乎所有的 – 2014-10-30 21:57:17