gpt4 book ai didi

javascript - 动态更改滚动条上的背景颜色

转载 作者:行者123 更新时间:2023-11-30 08:21:37 25 4
gpt4 key购买 nike

有没有办法在滚动时动态改变背景颜色?

例如,引用这个网站( https://www.samsung.com/sec/smartphones/galaxy-note9/ )

当您第一次访问该网站时,背景颜色为蓝色。

向下滚动时,它的颜色平滑地变为黑色。

另请参阅此站点(codepen.io/Funsella/pen/yLfAG/)

第二个站点与第一个站点相同。但是它的颜色立刻变了。

但第一个站点的颜色并没有立即改变。

随着滚动位置逐渐变化。

body {
height: 100vh;
}
.section1 {
background-color: white;
height: 100%;
}
.section2 {
background: linear-gradient(#f05fa6, #ed1654);
height: 100%;
}
<html>
<body>
<section class="section1">
SECTION1
</section>
<section class="section2">
SECTION2
</section>
</body>
</html>

上面的代码是我正在处理的。

当前它的颜色按每个部分分开。

当我向下滚动时,我想改变颜色 background-color: white -> background: linear-gradient(#f05fa6, #ed1654)

有什么解决办法吗?

最佳答案

您需要通过考虑页面的滚动偏移(window.scrollY,或旧版浏览器上的window.pageYOffset)来平滑地插入颜色。

三星网站正在过渡纯色而不是渐变色,这样更简单一些。

像这样 ( see CodePen ):

const [red, green, blue] = [69, 111, 225]
const section1 = document.querySelector('.section1')

window.addEventListener('scroll', () => {
let y = 1 + (window.scrollY || window.pageYOffset) / 150
y = y < 1 ? 1 : y // ensure y is always >= 1 (due to Safari's elastic scroll)
const [r, g, b] = [red/y, green/y, blue/y].map(Math.round)
section1.style.backgroundColor = `rgb(${r}, ${g}, ${b})`
})

您可以将相同的逻辑应用于渐变颜色。

关于javascript - 动态更改滚动条上的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637835/

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