iOS WebKit 中的透明 SVG

发布于 2024-10-13 21:21:37 字数 587 浏览 3 评论 0原文

WebKit 有一个错误,导致嵌入的 SVG(通过 )具有白色背景而不是透明背景。

它已得到纠正,但在 iOS 上没有,因为 iOS 上有更旧的 WebKit 版本,

对此有一些好的解决方法吗?我非常需要透明背景。

我知道两个次优的解决方法:

  • 使用 标记。 - 我不能这样做,因为作为 imgs 插入的 SVG 的 DOM/XML 树无法被遍历/操作。

  • 用自身屏蔽 元素。令人惊讶的是,如果将 SVG 用作遮罩,旧的 WebKit 可以检测到透明度,但我认为这是一个丑陋的解决方案:

有什么好的解决方案吗?

WebKit had a bug that caused embedded SVG (by <embed> or <image>) to have white background instead of transparent.

It was corrected, but not on iOS, where there is much older build of WebKit

Is there some good workaround for this? I desperately need the transparent background.

I know two sub-optimal workarounds:

  • Use <img> tag. - I can not do that, because the DOM/XML tree of SVGs inserted as imgs can't be traversed/manipulated.

  • Mask the <object> or <embed> element with itself. Surprisingly, event the old WebKit can detect the transparency if the SVG is used as mask However I consider it an ugly solution:

    <object style="-webkit-mask-image:url(image.svg);" data="image.svg" type="image/svg+xml" />

Is there some good solution to this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

追风人 2024-10-20 21:21:37

我找到了解决方案。

我可以使用内联 SVG/XML。在这种情况下,我可以获得透明度和遍历 SVG DOM 节点的能力。

唯一的缺点是我必须使用有效的 XML 标记和正确的内容类型标头(text/xml 不知何故效果最好,我不知道为什么)

I found a solution.

I can use inline SVG/XML. In that case I get both transparency and the ability to traverse SVG DOM nodes.

The only disadvantage is that I have to use valid XML markup with correct Content-type headers (text/xml somehow works best, I don't know why)

友欢 2024-10-20 21:21:37

你所说的错误是众所周知的。如果是在 iOS 上,你真的需要使用矢量图形吗?为什么不使用具有继承透明度的 PNG?

The bug you are talking about is well known. If it is on iOS, do you really need to be using vector graphics? Why not use a PNG with inherit transparency?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文