javascript - 更改 SVG 填充循环

标签 javascript svg

我有简单的 SVG 插图,有什么方法可以不断改变它的颜色吗?就像一个循环不停地随机颜色变化。

这是我的 svg

<svg width="533" height="499" viewBox="0 0 533 499" fill="none" xmlns="http://www.w3.org/2000/svg">

最佳答案

这就是我的做法:我使用颜色 hsl 进行填充,并使用 requestAnimationFrame 对颜色的色调进行动画处理。我希望它有帮助。

let p1 = document.querySelectorAll("path")[0];
let p2 = document.querySelectorAll("path")[1]
let h = 0;

function changeColor(){
  
  window.requestAnimationFrame(changeColor);
  h+=.5;
  h2=210+h;
  p1.setAttributeNS(null,"fill", `hsl(${~~h},100%,50%)`);
  p2.setAttributeNS(null,"fill", `hsl(${~~h2},100%,50%)`);
}

changeColor()
<svg width="533" height="499" viewBox="0 0 533 499" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M258.089 59.6035C309.803 -3.94652 379.363 78.1818 407.679 127.19C352.338 67.4782 301.718 129.7 287.076 167.787C272.435 205.874 233.694 210.043 205.199 217.679C187.359 222.459 146.446 248.26 128.6 264.085C109.864 289.466 48.3081 292.846 41.8378 268.698C27.0852 213.64 95.5238 148.37 137.644 123.97C163.705 101.458 206.375 123.154 258.089 59.6035Z" fill="blue"/>
<path d="M448.323 394.788C427.389 384.661 420.75 356.279 420.047 343.354C441.009 284.421 527.63 350.762 528.167 368.218C528.703 385.674 474.491 407.447 448.323 394.788Z" fill="red"/>
</svg>

关于javascript - 更改 SVG 填充循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54466718/

相关文章:

javascript - 如何使用 JS/jQuery 将输入字段相互求和

javascript - 为什么 jquery fadeOut 与 setTimeout 的行为很奇怪?

javascript - 是否可以通过编程方式控制 svg

javascript - 在柱形图中旋转标签 d3.JS

javascript - 更新链接形状时在 Safari 中使用中断的 SVG clipPath

javascript - 将 kml 转换为 geojson 时出错

ASP.NET gridview 回发不适用于匿名用户

JavaScript 动态类型 int/float

javascript - 两个网络图的比较

css - CSS3/SVG 中使用的 4x4 变换矩阵背后的方程式是什么?