我正在try 使用CSS和JavaScript(react too),使SVG圆形进度条根据线性渐变的进度/百分比改变 colored颜色 .

到目前为止,我找到的每个解决方案都有硬编码的 colored颜色 代码或使用jQuery,但我无法使用.

  <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%的值.如果能帮点忙,我们将不胜感激.谢谢

推荐答案

所以,在霍沃斯留下的 comments 的帮助下,我搜索了rgb算术解,在this个答案中几乎完全找到了我所需要的.hsl也是一种 Select ,但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相关问答推荐

如何将元素排列得彼此靠近?

我可以在useState中调用函数并使用其数据吗

订阅操作顺序

创建私有JS出口

在具有焦点和上下文的d3多线图表中,如何将上下文的刷新限制在特定日期?

使用redux-toolet DelivercThunks刷新访问令牌

将状态向下传递给映射的子元素

无法在nextjs应用程序中通过id从mongoDB删除'

在JavaScript中声明自定义内置元素不起作用

如何在angular中从JSON值添加动态路由保护?

MathJax可以导入本地HTML文档使用的JS文件吗?

不能将空字符串传递给cy.containes()

如何在不影响隐式类型的情况下将类型分配给对象?

根据一个条件,如何从处理过的数组中移除一项并将其移动到另一个数组?

打字脚本中方括号符号属性访问和拾取实用程序的区别

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

是否可以将异步调用与useState(UnctionName)一起使用

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

我正在试着做一个TicTacToe Ai来和我玩.但是,我试着在第一个方块被点击时出现一个X,然后在第二个方块之后出现一个O

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色