【发布时间】:2014-01-03 18:56:33
【问题描述】:
在我的网站中,我嵌入了一些 svg。它们似乎都可以在 Chrome、Firefox、IE(9+) 和 Safari 中正常工作。但是,只要 svg 中包含图像,safari 就不会渲染图像。
基于之前的类似主题,我尝试了以下方法:
SVG <image> elements not displaying in Safari - 封闭
<use>
这样标记<use></use>
SVG Image dosen't appear in Safari - 我觉得这不是很有用,因为这是删除 svg 的 aprt。
Not able to render SVG image in Safari - 添加
<meta http-equiv="Content-Type" content="application/xhtml+xml"> 在标题中。
除此之外,我真的不知道还能尝试什么。也许要注意的另一件有趣的事情是,在我的页面内,没有显示图像,但我可以在 safari 中打开 svg 文件(只是文件),它会被正确渲染。此外,在浏览器中作为文件打开后,它也会在页面内呈现。我将 svg 嵌入到带有 img 标签的页面中。
<img src="mysvg.svg" class="center-block"/>
这是我的 svg:
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="328px" height="328px" viewBox="0 0 328 328" enable-background="new 0 0 328 328" xml:space="preserve">
<g>
<defs>
<polygon id="SVGID_1_" points="1.414,164.001 164,326.586 326.586,164.001 164,1.414 "/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"></use>
</clipPath>
<g id="DSC_x5F_0112-2.psd" clip-path="url(#SVGID_2_)">
<g id="DSC_x5F_0112-2.psd_1_" enable-background="new ">
<image overflow="visible" width="338" height="532" id="DSC_x5F_0112-2" xlink:href="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNhaHR0cDov
.....SLKPF+7j+acOZPZjmsw4Q0f0L/6k1fu3WFvY/wDEB5o0d7H7/wD7SPFgPzVE54J9/wBI/qez5vei
r/fdeaS//9k=" transform="matrix(0.9818 0 0 0.9818 -2.7197 -11.064)">
</image>
</g>
</g>
</g>
<g>
<path fill="#FFFFFF" d="M164,328.001L0,164.002L164,0.001l164,164.001L164,328.001z M1.414,164.002L164,326.587l162.586-162.585
L164,1.415L1.414,164.002z"/>
</g>
</svg>
我减少了 base64 图像字符串,以缩短代码。完整的 svg 可以在 here 找到。
更新:为了清楚起见,svg 在浏览器(safari)中显示,但图像丢失(我只能看到边框)。
【问题讨论】:
-
Safari 与 Chrome 的比较:Safari 在
</image></g>></g>之后关闭</clipPath>!? -
感谢您的评论,但这仍然不能解决我的问题。而且,当我在 Safari 中检查元素时,仅打开 svg 时,我无法确认您的评论是否属实。我觉得没问题。
-
很可能 b.由于这种差异,您的输出错误。在 Web Inspector 资源选项卡中打开源代码会显示元素
</clipPath>它应该在的位置。打开 DOM 元素</clipPath>位于错误的位置。至少在我的 Safari 版本中。 -
感谢您指出。我尝试过使用多边形切换使用,但仍然没有成功。当它在 dom 内部时,图像不显示。