【发布时间】:2013-07-27 02:51:51
【问题描述】:
这个问题对这里的许多人来说可能是愚蠢的。我在纯 JS 中滚动后制作粘性 div。有些人可能会建议用 jQuery 制作它,但我对此不感兴趣。我需要的是类似于this 的东西。这里 div 一直移动到顶部,但我需要它有 60px 顶部。我做了一个脚本,但它不起作用。谁能帮我解决这个问题?
这是我的代码。
HTML
<div id="left"></div>
<div id="right"></div>
CSS
#left{
float:left;
width:100px;
height:200px;
background:yellow;
}
#right{
float:right;
width:100px;
height:1000px;
background:red;
margin-top:200px;
}
JS
window.onscroll = function()
{
var left = document.getElementById("left");
if (left.scrollTop < 60 || self.pageYOffset < 60) {
left.style.position = 'fixed';
left.style.top = '60px';
} else if (left.scrollTop > 60 || self.pageYOffset > 60) {
left.style.position = 'absolute';
left.style.margin-top = '200px';
}
}
这是我需要实现的。左侧 div 在页面加载时必须有 margin-top:200px 和 position:absolute。当用户滚动页面时,左边的 div 应该滚动,当它到达 top:60px; 时,它的位置和 margin-top 应该变为 position:fixed 和 margin-top:60px;
这里是FIDDLE
【问题讨论】:
-
JavaScript 区分大小写。
document.getElementByID不正确。应该是document.getElementById。你在该行的末尾有一个流氓,。而且您没有定义一个名为left的变量。您可能打算使用字符串"left" -
请参阅jsfiddle.net/bud4S/1 以获取具有上述评论者修复的固定版本。
-
你的问题没有意义。尤其是最后一段。
-
我能知道它没有意义的原因吗?
-
我希望它像 jsbin.com/omanut/2 这样工作。但它必须有
margin-top:60px;
标签: javascript scroll sticky