JavaScript更改滚动条上的背景色
我正在练习Javascript和css。我想在向下滚动时更改背景色。我不想用图书馆来做那个。我跟随这个演示来学习逻辑,但他使用了jquery。我遵循了scrollTop。我的javascript逻辑可以工作,但它不是这样工作的。我想我必须针对每个JavaScript更改滚动条上的背景色,javascript,html,css,background-color,Javascript,Html,Css,Background Color,我正在练习Javascript和css。我想在向下滚动时更改背景色。我不想用图书馆来做那个。我跟随这个演示来学习逻辑,但他使用了jquery。我遵循了scrollTop。我的javascript逻辑可以工作,但它不是这样工作的。我想我必须针对每个div来改变背景色,但不知道如何改变 函数showScrollColorChange(){ //让scroll=window.scrollTop()+(window.height()/3); 如果(document.body.scrollTop>20
div
来改变背景色,但不知道如何改变
函数showScrollColorChange(){
//让scroll=window.scrollTop()+(window.height()/3);
如果(document.body.scrollTop>20 | | document.documentElement.scrollTop>30){
document.body.classList.add('color-violet')
}if(document.body.scrollTop>40 | | document.documentElement.scrollTop>40){
document.body.classList.add('color-green')
}否则{
document.body.classList.add('color-orange')
}
}
/*document.body.addEventListener('scroll',()=>{
showScrollColorChange()
}) */
window.onscroll=函数(){showcollColorChange()}代码>
*{
框大小:边框框;
}
身体{
保证金:0;
填充:0;
过渡:背景300毫秒线性,颜色300毫秒线性;
}
.集装箱{
显示器:flex;
证明内容:中心;
边缘顶部:20px;
填充:50px;
最小高度:100vh;
}
p{
宽度:50%;
字体大小:20px;
}
img{
宽度:500px;
高度:500px;
边界半径:5px;
}
/*颜色*/
.紫罗兰色{
背景色:#7A4EAB;
}
.靛蓝{
背景色:#4332CF;
}
.蓝色{
背景色:#2F8FED;
}
.绿色{
背景色:#4DCF42;
}
.黄色{
背景色:#FAEB33;
}
.橙色{
背景色:#F19031;
}
.红色{
背景色:#F2293A;
}
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我看到了两种解决方案:
类列表删除每个未使用的类。删除('className')
李>
document.body.style.background='#FFFFFF'
更改正文背景,并为每个更改的颜色添加注释,以避免混淆IntersectionObserver
非常方便。你只要观察每个容器
我在元素中添加了一个名为\u class
的自定义属性。它包含在elemen进入/离开视口时应添加/删除的类的名称
观察者从主线程运行,因此其性能更高
要查看它是如何工作的,您需要打开全屏。阈值设置为0.9,这意味着在将类添加到主体之前,90%的div需要可见
let containers=document.querySelectorAll(“.container”)
让观察者=新的相交观察者((条目)=>{
条目.forEach((条目,i)=>{
让color=entry.target.attributes.\u class.nodeValue;
if(输入。isIntersecting){
document.body.className=“”;
document.body.classList.add(颜色);
}
})
},{阈值:0.9})
containers.forEach(container=>{
观察者,观察者(容器);
})
*{
框大小:边框框;
填充:0;
保证金:0;
}
身体{
保证金:0;
填充:0;
过渡:背景300毫秒线性,颜色300毫秒线性;
}
.集装箱{
显示器:flex;
证明内容:中心;
边缘顶部:20px;
填充:50px;
最小高度:100vh;
}
p{
宽度:50%;
字体大小:20px;
}
img{
宽度:500px;
高度:500px;
边界半径:5px;
}
/*颜色*/
.紫罗兰色{
背景色:#7A4EAB;
}
.靛蓝{
背景色:#4332CF;
}
.蓝色{
背景色:#2F8FED;
}
.绿色{
背景色:#4DCF42;
}
.黄色{
背景色:#FAEB33;
}
.橙色{
背景色:#F19031;
}
.红色{
背景色:#F2293A;
}
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
我的同僚们都是精英。尼希尔在阿利奎姆阿苏门达的埃克。行政长官
圣奎拉特·马格尼。圣彼得堡市临时劳工协会(nihil molestias dolores tempora voluptas LABROUM sint)
containers = document.getElementsByClassName("container");
var containertops = [];
containertops.push(0); // add for space before 1st container
for (var i = 0; i < containers.length; i++) {
containertops.push(containers[i].offsetTop);
}
// array of colours to use
var colours = [
"white",
"color-violet",
"color-indigo",
"color-blue",
"color-green",
"color-yellow",
"color-orange",
"color-red",
];
// loop through the containers and add a new colour as the containers change
for (var i = 0; i < containertops.length; i++) {
// if this container is at the top of the screen get a new colour class
if (document.body.scrollTop >= containertops[i] || document.documentElement.scrollTop >= containertops[i]) {
document.body.className = ''; // clear class
// if we have not enough colours, use the last colour class again
colourclass= (i>=colours.length?colours.length-1: i);
document.body.classList.add(colours[colourclass]);
}
}