【发布时间】:2017-10-15 17:43:13
【问题描述】:
我有一个元素,我希望在它到达屏幕顶部后粘在顶部。
<div id="HeaderWrapper">
...
<div id="Navigation">
Navigation
</div>
...
</div>
我在scroll 上添加了一个事件侦听器,它将调用一个函数来使用getBoundingClientRect() 方法检查元素的发布。如果元素的top 或y 相对于视口小于0,那么我想修复/粘贴标题。同样,如果它大于 0,那么我想删除修复位置。在这两种情况下,我都添加和删除了 fixed_navbar 的类名,它具有固定位置的属性。
document.addEventListener("scroll", function() {
const el = document.getElementById("Navigation");
let rect = el.getBoundingClientRect();
if (rect.top <= 0) {
el.classList.add("fixed_navbar");
} else {
el.classList.remove("fixed_navbar");
}
});
您也可以查看codepen demo。
当元素的顶部位置大于零时,它可以正常工作。此外,当向下滚动到元素的顶部位置小于 0 的位置时,它会粘在页面上并具有固定的属性。但是再次滚动到元素顶部大于 0 的位置时,元素仍然具有固定属性并粘在屏幕顶部。如何让元素在到达屏幕顶部时粘在顶部,当元素低于屏幕顶部时再次移除固定位置?
【问题讨论】:
标签: javascript css sticky