14

我发现当 CSS3 缩放应用于小型 SVG 图标(9px:9px 缩放:1.5)时,SVG 图标可能会模糊。在这种情况下获得一个清晰干净的图标有什么想法吗?提前致谢。

SVG:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
         x="0px" y="0px" width="9px" height="9px" viewBox="0 0 9 9" enable-background="new 0 0 9 9">
    <g>
        <g fill="none" transform="translate(0.5, 0.5)"> 
            <g stroke="#000000" stroke-width="0.5" stroke-linecap="square" >
                <line x1="2" y1="4"  x2="6" y2="4"/>
                <line x1="4"  y1="2" x2="4" y2="6"/>
            </g>
            <g stroke="#909090" stroke-width="1" stroke-linecap="square" >
                <rect x="0" y="0" width="8" height="8"/>
            </g>
        </g>
    </g>
</svg>
4

1 回答 1

24

自己有解决办法。诀窍是添加:

shape-rendering="crispEdges"

到 SVG 元素。

来自Mozilla MDN

KrisEdges 表示用户代理应尝试强调艺术品干净边缘之间的对比,而不是渲染速度和几何精度。为了获得清晰的边缘,用户代理可能会关闭所有直线和曲线的抗锯齿,或者可能只关闭接近垂直或水平的直线。此外,用户代理可能会调整线条位置和线条宽度以将边缘与设备像素对齐。

查看jsFilddle上的区别。

于 2013-06-03T23:29:09.943 回答