[英]Animating a CSS linear-gradient's change in percentage values in Javascript?
我正在制作一个游戏,其中在进度条中跟踪分数占总可能分数的百分比。
现在,我有一个 javascript 方法来更新背景的线性渐变百分比,这会导致条形根据百分比变量的值立即更新为新的 position:
document.getElementById("pointThreshold").style.background = 'linear-gradient(to right, rgb(255, 230, 0) ' + percentage + '%, #1b1f20 0%)';
此代码有效并且进度条更新正确,但我希望能够为该百分比的变化设置动画。 我不确定如何完成此操作。 这是一件容易的事吗?
我设法让进度条立即更新,但不是动画格式。
这不是一件“容易做的事”,不是。 CSS 几乎可以做 animation 除了线性渐变之外的所有事情。 您只是选择了最糟糕的绘制进度条的方法。
如果您绝对必须使用渐变,您可以做的一件事有点复杂:
background-size
将渐变背景缩放到容器大小的两倍。background-position
控制渐变的 positiontransition
动画background-position
运行此代码片段并单击黄色矩形以观看动画变化。 JavaScript 设置.style.backgroundPosition = "50%";
触发该更改,CSS 会顺利处理动画。
document.querySelector( "div" ).onclick = function() { this.style.backgroundPosition = "50%"; }
div { width:200px; height:50px; background: linear-gradient(to right, rgb(255, 230, 0) 50%, #1b1f20 50.1% ); background-size: 200%; background-position: 0%; transition: background-position 1s; }
<div></div>
最后,除非你被要求使用渐变,否则我不会。 所有这些东西都比渐变更容易处理:边框、框阴影、图像和绝对定位的子元素。 CSS 可以用一行很容易地为所有这些设置动画。
这是相同的效果,使用框左侧的黄色边框而不是线性渐变实现。 单击黑色矩形以查看黄色边框平滑地动画到更大的尺寸。
document.querySelector( "div" ).onclick = function() { this.style.borderWidth = "0 0 0 " + 100 + "px"; }
div { width: 200px; height: 50px; box-sizing: border-box; background-color: black; border:0px solid yellow; transition: border-width 1s; }
<div></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.