gpt4 book ai didi

javascript - 根据线性渐变中的颜色更改 SVG 圆形进度条描边

转载 作者:行者123 更新时间:2023-12-05 04:27:18 30 4
gpt4 key购买 nike

我正在尝试使用 CSS 和 JavaScript(也有反应)使 SVG 圆形进度条根据线性渐变的进度/百分比改变颜色。

到目前为止,我找到的每个解决方案都有硬编码颜色代码或使用我无法使用的 jQuery。我的代码和 CSS 如下。

  <svg viewBox="0 0 36 36" className="circular-chart">
<path className="svg-back"
fill='none'
stroke={props.theme.colors.Neutral.Gray1}
strokeWidth={3}
d="M18 2.0845
a 15.9155 15.9155 0 0 1 0 31.831
a 15.9155 15.9155 0 0 1 0 -31.831"
/>
<path className="circle"
stroke-dasharray={`${props.percentage} 100`}
d="M18 2.0845
a 15.9155 15.9155 0 0 1 0 31.831
a 15.9155 15.9155 0 0 1 0 -31.831"
/>

<text
x={18}
y={21}
className="svg-circle-text">
{props.percentage}%
</text>
</svg>

CSS:

    .svg-circle-text {
font-size: 0.5rem;
text-anchor: middle;
fill: ${theme.colors.Primary.Black}
font-weight: bold;
}

.circular-chart {
display: block;
margin: 10px auto;
max-width: 80%;
max-height: 250px;
}

.circle {
stroke: #99DA98;
fill: none;
stroke-width: 3;
stroke-linecap: round;
animation: progress 1s ease-out forwards;
}

@keyframes progress {
0% {
stroke-dasharray: 0 100;
}
}

在另一个组件中,我有以下背景作为这个圆形进度条的关键:

 background: linear-gradient(
90deg,
#99da98 0%,
#f8b66a 51.56%,
#cf6767 100%
);

所以如果百分比是 60%,它应该显示 60% 的渐变值。一点帮助将不胜感激。谢谢。

最佳答案

所以在A Haworth 留下的评论的帮助下,我搜索了rgb 算术解决方案,在this 中几乎找到了我需要的内容。回答。 hsl 也是一个选项,但 rgb 听起来很简单。通过对以下代码(来自另一个问题)进行一些更改,我能够实现我想要的。

function getGreenToRed(percent){
r = percent<50 ? 255 : Math.floor(255-(percent*2-100)*255/100);
g = percent>50 ? 255 : Math.floor((percent*2)*255/100);
return 'rgb('+r+','+g+',0)';
}

关于javascript - 根据线性渐变中的颜色更改 SVG 圆形进度条描边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72861478/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com