有一个矢量,在大尺寸下它有很好的边框,但是当尺寸从 25px 减小时 - 矢量开始表现得非常奇怪!边框有像素化效果!
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 800 800"><g stroke="#fff" stroke-miterlimit="10"><use xlink:href="#B"/><use xlink:href="#B" y="252"/><use xlink:href="#B" y="496"/></g><defs ><path id="B" d="M780.5 169.6a42 42 0 0 1-41.9 41.9H61.3a42 42 0 0 1-41.9-41.9v-.8a42 42 0 0 1 41.9-41.9h677.3a42 42 0 0 1 41.9 41.9v.8z"/></defs></svg>
图标在50px
图标在20px
如您所见,矢量width:20px;
有灰色或半透明的条纹。是否有可能以某种方式摆脱它们,也许矢量本身没有正确绘制?
已经注册样式 shape-rendering: geometricPrecision;
在 illustrator 中,采用简单的矩形并进行四舍五入。我怎样才能解决这个问题?
碰巧在某些尺寸下,矢量看起来很完美,但有些恶心。
由于坐标具有小数部分这一事实而发生像素化。
在您的示例中:
d="M780.5 169.6a42
这是它的样子:
SVG 有一个标准的整数值 -
1px
因此在渲染小数部分时,它会以灰色调实现整体。见恩索的回答。
简要地:
shape-render = "crispEdges"
实用技巧
如果你想自己画,那么你需要:
viewBox
4px
,那么 2px 将是外部的。这是剪裁轮廓的原因之一。下面是一个线宽位置的例子
1px
看半个像素相对于轴向在你的例子中,我画了三条线,4px 宽,线的末端是圆形的
stroke-linecap:round;
下面的代码:
要更改图标的大小,请使用 -
height="10vh"
红色边框显示 SVG 画布的尺寸,对调试很有用,完成后删除 -
style="border:1px solid red"