gpt4 book ai didi

javascript - 在 vanilla JS 中,如何根据滚动是否位于顶部来添加或删除元素中的类?

转载 作者:行者123 更新时间:2023-12-02 15:05:11 26 4
gpt4 key购买 nike

我试图使粘性导航在不在顶部滚动时具有特定的类,并且在在顶部滚动时不具有该类。抱歉,如果这令人困惑。

我现在遇到的问题是,在底部的代码中,每当我滚动鼠标时,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
}
};

最佳答案

尝试使用它来获取距顶部的距离:

var distance = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);

在你的代码中:

 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;

var distance = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);

if ( distance === 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
}
};

虽然这有效,但我强烈建议改进你的 JS 代码,以符合更现代的实践。

关于javascript - 在 vanilla JS 中,如何根据滚动是否位于顶部来添加或删除元素中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166846/

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