use*_*096 4 css svg blurry drop-shadow
我正在努力在尽可能多的平台上制作带有阴影的 SVG 图标。
我为此使用了以下简单的 CSS:
.test{
width: 14px;
height: 14px;
background-image: url("../images/test.svg");
background-repeat: no-repeat;
opacity: 0.8;
-webkit-filter: drop-shadow(1px 1px 0px #E0E0E0);
}
Run Code Online (Sandbox Code Playgroud)
在 Chrome、Firefox 和 IE 等桌面浏览器上运行良好。但是在移动浏览器上,问题开始了:在 Chrome 中,图标变得模糊,而在 Firefox 中,阴影被忽略了。删除阴影时,Chrome 中的图标将再次清晰,因此我认为它与阴影有一些共同之处。
任何人都遇到了同样的问题,并找到了解决方案?
刚刚找到了答案。
出现此问题的原因是 SVG 过滤器的生成方式:在应用过滤器之前,会创建相应元素的位图图像,然后对其进行操作并在顶部分层。你可以在这里找到一个很好的解释。
要在 HDPI 屏幕上显示清晰的 svg 图像,您可以尝试使用 上的filterRes- 属性effect,它为计算出的 svg 效果提供像素分辨率,更多信息请点击此处。
像这样使用它:
<filter id="dropshadow" height="170%" filterRes="200">
<feGaussianBlur in="SourceAlpha" stdDeviation="20"/>
<feOffset dx="0" dy="2" result="offsetblur"/>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<path id="icon" fill="#fff" style="filter:url(#dropshadow)" d="..."></path>
</svg>
Run Code Online (Sandbox Code Playgroud)
假设您添加background-size: contain到您的 css - 绘制的容器大概是14px x 14px. 为了使与Retina显示屏足够的分辨率(例如因素的影子2),你应该采取的健康价值30的filterRes。这并不理想,但似乎是目前唯一可行的选择。有点挫败使用 svg 的原因。
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |