如何固定一块div滑动到一定位置之后不再滑动?
例如:http://segmentfault.com/q/1010000000312781这个页面中的“转发分享”和“相关问题”,在滑动到页面顶部的时候不再滑动了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
主要是通过onscroll判断位置和高度,并修改style。最终还是要用position:fixed。
写了一个大概是最简单的用例,于是有些css细节没照顾到。你看看是否有帮助。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
body{
width:40em;
margin:0 auto;
}
article{
float:left;
}
aside{
float:right;
}
p{
line-height:3em;
}
</style>
</head>
<body>
<article>
<p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p>
</article>
<aside>
<p>侧边栏</p><p>侧边栏</p><p>侧边栏</p>
<div id="float"><p>漂浮侧边栏</p></div>
</aside>
<script type="text/javascript">
window.onload=
function(){
var oDiv = document.getElementById("float"),
H = 0,
Y = oDiv
while (Y) {H += Y.offsetTop; Y = Y.offsetParent}
window.onscroll = function()
{
var s = document.body.scrollTop || document.documentElement.scrollTop
if(s>H) {
oDiv.style = "position:fixed;top:0;"
} else {
oDiv.style = ""
}
}
}
</script>
</body>
</html>