我试图使元素显示在下面的图像:
它基于Apple Watch的空气质量小部件。
该圆不是完全圆的,并且渐变在该线上发生变化。除此之外,还有一个“点”,显示实际值是什么(我想用JavaScript设置这个)。
我试着用dasharray
和dashoffset
来做半圆。但是梯度不能穿过整条线。如果不对对象使用transform: rotate
,我也无法获得底部圆差距。
#Layer_1 {
transform: rotate(135deg);
}
.ring {
stroke-dasharray:314;
stroke-dashoffset: 78;
stroke-linecap: round;
}
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 120 120" enable-background="new 0 0 120 120" xml:space="preserve">
<circle class="ring" fill="none" stroke="url(#linear)" stroke-width="10" stroke-miterlimit="10" cx="50%" cy="50%" r="50"/>
<defs>
<linearGradient id="linear" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#05a"></stop>
<stop offset="50%" stop-color="#a55"></stop>
<stop offset="100%" stop-color="#0a5"></stop>
</linearGradient>
</defs>
</svg>
2条答案
按热度按时间f2uvfpb91#
你是在正确的轨道上,当谈到中风破折号阵列。在该示例中,使用掩模来制作圆和焦点。遮罩将应用于包含四条不同线的组,这四条线构成了圆形渐变。我知道,这个问题与渐变无关,但它现在变得很重要,因为SVG只有线性和径向渐变。
9fkzdhlc2#
虽然SVG内容不直接支持锥形渐变,但您可以将HTML元素与
background-image: conic-gradient()
和SVG定义的遮罩组合在一起,以剪切弧和位置标记。对于圆弧,您可以使用圆和
stroke-dasharray
的技术。我发现用适当的弧线画一条路径更容易。pathLength
属性将有助于沿着其长度进行定位,但对于我的解决方案来说并不是严格需要的。有多种方法来实现一个进度标记,在这里,我将使用一个fake
<animateMotion>
沿着路径动画一个环,并没有真正移动。位置被设置为keyPoints="x;x"
属性,x
是一个0到1之间的数字,可以用Javascript设置。