有没有办法在滚动时动态地改变背景颜色?
例如,引用此站点(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)
有什么解决办法吗?
5条答案
按热度按时间ie3xauqp1#
您需要通过考虑页面的滚动偏移(
window.scrollY
,或旧浏览器上的window.pageYOffset
)来平滑地插入颜色。三星网站正在过渡纯色而不是渐变色,这稍微简单了一点。
如下所示(see CodePen):
您可以将相同的逻辑应用于渐变颜色。
polhcujo2#
我认为你需要使用CSS的“transition”属性。
然后,您可以添加、删除元素沿着更改颜色:
insrf1ej3#
我试着使用自定义结束颜色的atomiks的解决方案,但太难了,我发现自己使用chroma.js是一个更好的解决方案
您需要使用两种(或更多种)颜色生成比例:
这里我创建了一个带有我想要的颜色的刻度,然后我添加了一个自定义域,这样我的刻度就可以使用偏移位置,偏移位置可以从0(页面顶部)到3600(页面底部)。或者,你可以尝试通过一些数学运算得到介于0和1之间的滚动位置值。
然后,当我们滚动时,我们可以使用当前滚动位置的比例,它将在到达页面底部的最后一个颜色
#e74c3c
之前,在我们的两种颜色之间生成RGBA颜色2ledvvac4#
这段jquery代码更改了正文的背景颜色。
不要忘记添加转换css来获得你在示例中看到的效果。
使截面类的背景透明。
5lhxktic5#
这个效果可以用一点JavaScript实现
首先创建一个包含内容的div,然后创建一个比内容小的框,并将overflow属性设置为scroll。
使用一点JavaScript就可以添加功能。首先创建一个事件监听器,当使用滚动效果时触发一个函数。当事件监听器触发时,您可以根据需要动态设置背景颜色。