gpt4 book ai didi

css - 移动浏览器上带有阴影模糊的 SVG

转载 作者:行者123 更新时间:2023-12-04 12:19:05 25 4
gpt4 key购买 nike

我正在努力在尽可能多的平台上制作带有阴影的 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);
}

在 Chrome、Firefox 和 IE 等桌面浏览器上运行良好。
但是在移动浏览器上,问题开始了:在 Chrome 中,图标变得模糊,而在 Firefox 中,阴影被忽略了。删除阴影时,Chrome 中的图标将再次清晰,因此我认为它与阴影有一些共同之处。

任何人都遇到了同样的问题,并找到了解决方案?

最佳答案

刚刚找到了答案。
出现此问题的原因是 SVG 过滤器的生成方式:在应用过滤器之前,会创建相应元素的位图图像,然后对其进行操作和分层。你可以找到一个很好的解释 here .

要在 HDPI 屏幕上显示清晰的 svg 图像,您可以尝试使用 filterRes -属性(property)在effect ,它为计算的 svg 效果提供像素分辨率,更多关于 here .
像这样使用它:

<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>

假设您添加 background-size: contain到您的 css - 绘制的容器大概是 14px x 14px .要以足够的分辨率为视网膜显示渲染阴影(例如因子 2 ),您应该采用健康值 30filterRes .这并不理想,但似乎是目前唯一可行的选择。有点挫败使用 svg 的原因。

关于css - 移动浏览器上带有阴影模糊的 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25351902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com