【发布时间】:2019-03-09 19:24:17
【问题描述】:
为了使用 Internet Explorer 11 在我们的网站上响应 SVG,我使用了 Nicholas Gallagher 的“Canvas Hack”。这个 hack 使用一个额外的 canvas 元素来使用 SVG 保持纵横比。内联 SVG 的整个结构看起来像这样。
HTML:
<div style="position:relative;width:100%;">
<canvas width="256" height="256"></canvas>
<svg viewBox="0 0 256 256" preserveAspectRatio="xMaxYMax meet">
...
</svg>
</div>
CSS:
canvas {
display: block;
width: 100%;
visibility: hidden;
}
svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
}
我正在使用SVGInject 使 SVG 内联,这意味着 SVG 被保存为单独的文件。在 SVG 注入之前,HTML 如下所示:
<div style="position:relative;width:100%;">
<canvas width="256" height="256"></canvas>
<img src="myimage.svg" onload="SVGInject(this)" />
</div>
这很好用,但维护非常烦人,因为对于每个 SVG,canvas 的 width 和 height 的值必须手动设置以匹配 SVG 的纵横比。而且由于 SVG 保存在单独的文件中,我每次都必须打开 SVG 才能找出纵横比。
所以我想知道,这是否可以在注射过程中自动完成?
我的想法是创建一个脚本,在注入期间以某种方式从 viewBox 属性读取 SVG 的纵横比,然后相应地设置画布的宽度和高度。
【问题讨论】:
标签: css svg responsive-design internet-explorer-11