我有一个应用程序Vue.js ,我需要创建一个进度条。我使用 Svg 是因为其他选项不起作用。如何将 SVG 半圆分成相等的部分。我得到一条实线。试图操纵属性stroke-dasharray,但它不起作用。你需要得到这样的东西:
到目前为止我已经做到了
我的代码:
<div class="radial">
<svg xmlns="http://www.w3.org/2000/svg" height="100" width="100" viewBox="0 0 200 200" data-value="40">
<path class="bg" stroke="#ccc" d="M41 149.5a77 77 0 1 1 117.93 0" fill="none"/>
<path class="meter" stroke="#D15F45" d="M41 149.5a77 77 0 1 1 117.93 0" fill="none" pathLength="100" stroke-dasharray="38, 100"/>
</svg>
</div>


最简单的选择,如果背景是白色的,可以用来自中心的 2 条白线覆盖:
带面具的选项
在这里,边框使用了另一种形状,线条粗细更大,我们用蒙版从其中剪掉了不必要的形状:
结果:
UPD:如问题中所述,带有数字和箭头
使用 stroke-dasharray 的解决方案
给定路径的最大长度等于长度
350px计算使用
getTotalLength()如果你需要分成三个相等的扇区,那么一个扇区的长度将等于
116.67px这是长度的总和:行 -
110px和空格6.67px有关如何使用
stroke-dasharray此处和此处将圆圈分成相等部分的更多详细信息填充第一个扇区的动画是基于将笔划长度的值从零更改为最大值
110px<animate id="an1" attributeName="stroke-dasharray" begin="0s;an3.end" values="0 110 0 240;110 0 0 240" dur="2s" fill="freeze" />同理,剩下的2个扇区依次填充。
我制作了不同颜色的扇区,如果需要,可以指定一种颜色。
指针箭头动画
<animateTransform id="an_arrow" attributeName="transform" type="rotate" values="-10 100 100;255 100 100" dur="6s" repeatCount="indefinite" fill="freeze" />填充进度条并显示百分比的相关主题的链接:
圆形进度条
圆形百分比进度条
圆形矢量进度条
应用svg遮罩的实际例子
以答案
Stranger in the Q为基础Alexander_TT,我得到了一个符合我项目条件的结果。属性数据(在示例中,由硬编码指定
pathLength = 30)currentVal = 22。