【发布时间】:2019-06-13 06:13:21
【问题描述】:
这是codepen,这个问题的底部是实际代码。尽管代码在 Chrome 中运行良好,但由于某种原因,svg 元素中的 image 元素无法在 Firefox 中加载。我已经在 Firefox 版本 64 和 64.0.2 上对其进行了测试。都不加载图像。
基于我遇到的SO answer 和documentation 本身,我尝试了许多不同的方法,但都没有奏效。我尝试过的一些事情是......
<svg xmlns:xlink="http://www.w3.org/1999/xlink" ... ><image xlink:href='...' href='...'
这是 Firefox 的 SVG 实现的错误吗?我之前发现了 Firefox 的 SVG 实现的错误,所以我不会感到惊讶。
HTML
<svg id='svg' viewBox='0 0 6144 4608' version='1.1'>
<image x='0' y='0' preserveAspectRatio='none'
xlink:href='https://i.postimg.cc/hvH4yn2Q/map.jpg'
id='background-image' />
<clipPath id='eye'>
<rect id='rectangle' x='3172' y='2404' rx='10' ry='10' />
</clipPath>
<image x='0' y='0' preserveAspectRatio='none'
xlink:href='https://i.postimg.cc/hvH4yn2Q/map.jpg'
id='main-image'/>
</svg>
CSS
body {
width: 100vw;
height: 100vh;
overflow: hidden;
margin: 0;
}
#svg {
width: 6144px;
height: 4608px;
position: absolute;
left: -3072px; /* set with JS */
top: -2304px; /* set with JS */
}
#background-image {
width: 6144px;
height: 4608px;
opacity: 0.25;
}
rect {
width: 35vw;
height: 75vh;
}
#main-image {
width: 6144px;
height: 4608px;
clip-path: url(#eye);
}
【问题讨论】:
-
@Kaiido 这不是重复的。该问题与缺少
width和height属性无关,它们在 css 中设置... -
是的,它是重复的,必须设置
width和height属性 才能让 Firefox 加载此图像,就像所需的 SVG1.1 规范一样。通过 CSS 设置它是不够的。在 svg2 中这会改变,但 FF 仍然不支持 SVG2 的这一部分(而 Chrome 支持)。 -
哦,实际上我错过了,但即使你的
<rect>在 svg1.1 中也需要它的 属性,但你的vw和vh单位将不起作用那里:codepen.io/_-0-_/pen/gZVOQL -
@Kaiido 因此,如果我在 HTML 中为
width和height属性添加随机值,我仍然可以在通过 JS 加载页面时修改它们,并且 HTML/SVG1.1 将尊重该权利?
标签: google-chrome firefox svg xlink