我尝试过创建渐变颜色更改横幅 site但似乎遇到了色带严重的问题。任何人都可以告诉我,如果不使用canvas元素可以在这个网站上改变颜色效果吗?
对不起,我是新手。
感谢任何反馈。
这个小提琴必须在Firefox中运行。对不起。
#solid {
position: absolute;
width: 100%;
height: 380px;
background: -webkit-linear-gradient(top left, rgb(105, 80, 102), #2E8ECE);
background: -o-linear-gradient(top left, rgb(105, 80, 102), #2E8ECE);
background: linear-gradient(to bottom right, rgb(105, 80, 102), #2E8ECE);
}
答案 0 :(得分:4)
您可以使用linear-gradient
背景图片和JavaScript执行此操作,如下面的代码段所示。所需要的只是使用JS rgb()
方法不断更改渐变的setInterval
颜色值。
注意:编码完成后,rgb()
值达到某个阈值后,立即返回原始状态。您还可以修改代码,使其递增直到达到某个级别,然后递减,以便它在高阈值和低阈值之间振荡。
var el = document.querySelector('.gradient-div');
/* Set the initial rgb() color values for the start and end colors */
var startColorRed = 62,
startColorGreen = 79,
startColorBlue = 216,
endColorRed = 251,
endColorGreen = 38,
endColorBlue = 103;
/* set the original gradient as the element's background image */
el.style.backgroundImage = 'linear-gradient(90deg, rgb(' + startColorRed + ', ' + startColorGreen + ', ' + startColorBlue + ') 10% , rgb(' + endColorRed + ', ' + endColorGreen + ', ' + endColorBlue + ') 90%)';
/* function to change the gradient's colors */
function changeGrad() {
/* do whatever math operation that is required on the rgb values of the color */
if (endColorRed >= 151) endColorRed--;
else endColorRed = 251;
if (startColorBlue >= 116) startColorBlue--;
else startColorBlue = 216;
if (endColorBlue <= 203) endColorBlue++;
else endColorBlue = 103;
if (startColorGreen <= 179) startColorGreen++;
else startColorGreen = 79;
if (endColorGreen <= 138) endColorGreen++;
else endColorGreen = 38;
el.style.backgroundImage = 'linear-gradient(90deg, rgb(' + startColorRed + ', ' + startColorGreen + ', ' + startColorBlue + ') 10% , rgb(' + endColorRed + ', ' + endColorGreen + ', ' + endColorBlue + ') 90%)';
}
/* Call the changeGrad function at regular intervals to change the gradient's colors */
window.setInterval(changeGrad, 500);
div {
height: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class='gradient-div'></div>