当用户滚过div时,我需要将css更改为position:fixed。 就像这里所做的一样:http://imakewebthings.com/jquery-waypoints/shortcuts/sticky-elements/但只有普通的jquery,没有插件 一旦用户滚动到另一个div,div也必须停止滚动 例如:
<div id="stuff"></div>
<div id="this"></div>//must start scrolling with user when user reaches it.
<div id="footer"></div>// when #this reaches within say, 10px, of #footer it must stop in it's current position, in order to prevent overlap
我假设我使用.scroll()
和.css()
,但我不知道该去哪里。
答案 0 :(得分:8)
我注意到你的答案#this
一旦你开始#footer
就会突然消失。我已经调整了你的答案,允许#this
坚持#footer
并滚动哪个更顺畅。
我的演示使用稍微不同的标记,并且更加冗长,所以跳转到jsFiddle并检查它。
答案 1 :(得分:2)
这最终对我有用:
jQuery(document).ready(function() {
var topOfrel = jQuery("#this").offset().top;
var topOffooter = jQuery("#footer").offset().top - jQuery(window).height();
var topOffootero = topOffooter ;
var boxheight = jQuery(window).height() - 130;//adjusting for position below
jQuery(window).scroll(function() {
var topOfWindow = jQuery(window).scrollTop();
if (topOfrel < topOfWindow && topOffooter > topOfWindow) {
jQuery("#this").css("position", "fixed").css("top", "130px").css("overflow","auto").css("height", boxheight + "px");
} else {
jQuery("#this").css("position", "static");
}
});
});
答案 2 :(得分:0)
您引用的页面使用jQuery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js">
并且还包含其他我们没有看到的Javascript
顺便说一下,你可以在这里查看:
http://imakewebthings.com/jquery-waypoints/waypoints.js
http://imakewebthings.com/jquery-waypoints/shortcuts/sticky-elements/waypoints-sticky.js
他可以看到他使用的功能,但我不会说这是一个快速的答案。基于他的脚本,他在页面加载后附加了一个元素的监听器:
<script type="text/javascript">
$(document).ready(function() {
$('.my-sticky-element').waypoint('sticky');
});
</script>
如果你有特定的问题要求,但我怀疑很多人会为你解释整个剧本。