我试图用纯JavaScript编写一个简单的脚本,这会创建一个位置粘滞效果。下面的代码对我很有用。
var siteHeader = document.getElementById('siteHeader'),
siteNav = document.getElementById('siteNav');
window.onscroll = function() {
if ( siteNav.offsetTop < document.documentElement.scrollTop + 26 || siteNav.offsetTop < document.body.scrollTop + 26) {
siteHeader.setAttribute("class","sticky");
}
else {
siteHeader.setAttribute("class","");
}
}
是否有更聪明的方法来写这条线?
if ( siteNav.offsetTop < document.documentElement.scrollTop + 26 || siteNav.offsetTop < document.body.scrollTop + 26) {
我试着写这篇文章,但它似乎没有按照我想要的方式工作。
siteNav.offsetTop ? document.documentElement.scrollTop + 26 : siteNav.offsetTop < document.body.scrollTop + 26
如果三元条件看起来很愚蠢,请道歉。
答案 0 :(得分:1)
仅使用原始代码(根据您认为合适的建议进行修改......)
如果您只关心添加/删除&#34;粘贴&#34;上课......
siteHeader[siteNav < (document.documentElement || document.body).scrollTop + 26 ? "addClass" : "removeClass"]("sticky");
- 编辑 -
没有注意到使用vanilla JS选择了siteHeader ......
siteHeader.setAttribute("class",
siteNav < (document.documentElement || document.body).scrollTop + 26
? "sticky" : "");
现在,&#34;聪明&#34;与可读性完全是主观的,但逻辑应该适合。