位置:JavaScript的粘滞效果

时间:2014-12-04 18:12:02

标签: javascript css position conditional-statements onscroll

我试图用纯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

如果三元条件看起来很愚蠢,请道歉。

1 个答案:

答案 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;与可读性完全是主观的,但逻辑应该适合。