我有一个带有viewBox="0 0 100 100" preserveAspectRatio="none"的svg,因为我需要参照百分比绘制一些元素。如果我现在画一个<circle cx="30" cy="50" r="0.5" stroke="white"/>,尽管它也会被拉伸/扭曲。有没有办法告诉circle元素保持它自己的长宽比?
viewBox="0 0 100 100" preserveAspectRatio="none"
<circle cx="30" cy="50" r="0.5" stroke="white"/>
3ks5zfa01#
如果你需要的只是一个圆,你可以使用一条很短很宽的线,就像下面的例子一样。这会起作用因为
stroke-linecap="round"
vector-effect="non-scaling-stroke"
div { width: 300px; height: 50px; background-color: lime; } svg { width:100%; height:100%; }
<div> <svg viewBox="0 0 100 100" preserveAspectRatio="none"> <!--<circle cx="30" cy="50" r="20"></circle>--> <line x1="30" y1="50" x2="30.1" y2="50" stroke-width="40" stroke="black" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> </div>
如果你需要一个白色的笔触,你可以添加一个更大的笔触宽度在黑色后面的白线一个二个一个一个
1条答案
按热度按时间3ks5zfa01#
如果你需要的只是一个圆,你可以使用一条很短很宽的线,就像下面的例子一样。
这会起作用因为
stroke-linecap="round"
会产生圆形的错觉vector-effect="non-scaling-stroke"
。如果你需要一个白色的笔触,你可以添加一个更大的笔触宽度在黑色后面的白线
一个二个一个一个