gpt4 book ai didi

javascript - 职位:用JavaScript实现粘性效果

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:37 25 4
gpt4 key购买 nike

我正在尝试使用纯 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

如果三元条件看起来很愚蠢,我们深表歉意。

最佳答案

仅使用原始代码(根据您认为合适的建议进行修改...)

如果您只关心添加/删除“粘性”类...

siteHeader[siteNav < (document.documentElement || document.body).scrollTop + 26 ? "addClass" : "removeClass"]("sticky");

-- 编辑--
没注意到 siteHeader 是用 vanilla JS 选择的...

siteHeader.setAttribute("class", 
siteNav < (document.documentElement || document.body).scrollTop + 26
? "sticky" : "");

现在,“聪明”与可读性完全是主观的,但逻辑应该符合。

关于javascript - 职位:用JavaScript实现粘性效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com