【发布时间】:2016-02-03 09:32:07
【问题描述】:
我试图让粘性导航在顶部不滚动时具有特定的类,而在顶部滚动时不具有该类。对不起,如果这令人困惑。
我现在坚持的事实是,每当我滚动鼠标时,底部代码 doc.scrollTop == 0 的计算结果为 true。我做错了什么?
HTMLElement.prototype.removeClass = function(remove) {
var newClassName = "";
var i;
var classes = this.className.split(" ");
for(i = 0; i < classes.length; i++) {
if(classes[i] !== remove) {
newClassName += classes[i] + " ";
}
}
this.className = newClassName;
}
window.onscroll = function() {
var body = document.body; //IE 'quirks'
var doc = document.documentElement; //IE with doctype
doc = (doc.clientHeight) ? doc : body;
if ( doc.scrollTop == 0 ) {
document.getElementById('top').removeClass('scrolling');
console.log("doc.scrollTop == 0");//TEST
} else {
document.getElementById('top').addClass('scrolling'); // need to make an addClass function ...
console.log("doc.scrollTop != 0");//TEST
}
};
【问题讨论】:
-
protip:你所谓的
removeClassalready exists in vanilla JS,就是element.classList.remove(...)函数。同样,add和toggle已经存在(阅读现代 HTML 可能是个好主意)。另外,不要使用 15 岁以上的window.onscroll,使用适当的现代window.addEventListener("scroll", function(evt) {...});事件处理。最后,看看getBoundingClientRect。
标签: javascript