我正在使用该问题的第二个答案中讨论的“将所有内容偏移半个像素”技巧来在形状上获得清晰的 1px 笔划。
(涉及到圆形边缘,因此shape-rendering: crispEdges
解决方案在这里不可行 - 它使笔划的弯曲部分看起来很糟糕。)
添加过滤器(我使用高斯模糊+偏移过滤器来实现投影)如何打破半像素偏移黑客?
你可以玩jsfiddle。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="-20%" y="-20%" width="160%" height="160%">
<feOffset result="offOut" in="SourceAlpha" dx="10" dy="10" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="2" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<g transform="translate(5.5,5.5)">
<!-- This one has a blurry stroke -->
<rect width="50" height="50" rx="5" ry="5" stroke="black" stroke-width="1" fill="steelblue" filter="url(#f1)" />
<!-- This one has a crisp stroke -->
<rect x="150" width="50" height="50" rx="5" ry="5" stroke="black" stroke-width="1" fill="steelblue" />
</g>
</svg>
显然我不能以新用户的身份发布内联图像,但你可以这是 svg 如何为我寻找的图像。