JavaScript和CSS自动背景更改的进一步实践
P粉875565683
2023-08-15 16:52:20
<p>在我之前的问题中,在(Jan)的帮助下,我解决了自动背景更改的问题。</p>
<p>我之前的问题:使用JavaScript和CSS实现自动背景更改</p>
<p>但是当背景更改时,颜色的跳跃是可见的,我希望颜色的变化可以无缝且缓慢地进行。</p>
<p><br /></p>
<pre class="brush:js;toolbar:false;">var i = 0;
function changeBackgroundColor() {
var background = document.getElementById("background");
if (i % 2 === 0) {
background.classList.remove("background-body");
} else {
background.classList.add("background-body");
}
i = i + 1;
}
setInterval(changeBackgroundColor, 3 * 1000);</pre>
<pre class="brush:css;toolbar:false;">html,body{
width: 100%;
overflow-x: hidden !important;
height: 100%;
overflow-y: hidden !important;
}
#background{
width: 100%;
height: 100%;
background: #39c787;
background-image: -webkit-gradient(linear, 15% 0%, 75% 84%, from(#ca83ddc4), to(#7874e3f3), color-stop(70%, #dfa450ab));
transition: all 5s ease;
-webkit-transition: all 5s ease;
-moz-transition: all 5s ease;
-o-transition: all 5s ease;
-ms-transition: all 5s ease;
}
.background-body{
background: #e0922d !important;
background-image: -webkit-gradient(linear, 15% 0%, 75% 84%, from(#9283ddc4), to(#22ff12d1), color-stop(70%, #c550dfab)) !important;
transition: all 5s ease;
-webkit-transition: all 5s ease;
-moz-transition: all 5s ease;
-o-transition: all 5s ease;
-ms-transition: all 5s ease;
}</pre>
<pre class="brush:html;toolbar:false;"><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body id="background"></body></pre>
<p><br /></p>
要使背景颜色平滑变化,您需要将过渡属性添加到background-color属性中。以下代码可以实现这一效果:
使用一个绝对定位的伪元素,具有不同的背景,然后在其上进行不透明度的变化过渡。