我试图将图像(.svg)宽度填充到我的DIV,允许它拉伸,但我的图像只有100%的宽度和高度它裁剪底部 .
如何使其拉伸高度到视口高度?我已经尝试将图像转换为背景图像,但这在设计中不起作用 .
.flag {
position: absolute;
z-index: -1;
background-size: contain;
}
#flag img{
width: 100vh;
height: 100vh;
}
<section class="cover" style="min-height: 100vh">
<img src="img/background.svg" class="flag"></div>
</section>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px"
height="768px" viewBox="0 0 1024 768" enable-background="new 0 0 1024 768" xml:space="preserve">
<g id="Layer_1" display="none">
<rect x="-0.5" y="0.5" display="inline" fill="#FFFFFF" stroke="#000000" stroke-miterlimit="10" width="57" height="768"/>
<rect x="967.5" y="0.5" display="inline" fill="#FFFFFF" stroke="#000000" stroke-miterlimit="10" width="57" height="768"/>
<rect x="-0.5" y="0.5" display="inline" fill="none" stroke="#000000" stroke-miterlimit="10" width="1025" height="57"/>
<rect x="-0.5" y="711.5" display="inline" fill="none" stroke="#000000" stroke-miterlimit="10" width="1025" height="57"/>
</g>
<g id="Layer_2">
<rect fill="#FFFFFF" width="1024" height="768"/>
<rect y="103" width="1022" height="34"/>
<rect y="171" width="1022" height="34"/>
<rect y="239" width="1022" height="34"/>
<rect y="631" width="1022" height="34"/>
<rect y="563" width="1022" height="34"/>
<rect y="495" width="1022" height="34"/>
<rect x="55" y="58" fill="#E5452D" width="912" height="654"/>
<rect x="55" y="385" fill="#0698CF" width="912" height="327"/>
</g>
</svg>
3 回答
要根据视口拉伸图像,您必须:
将
svg
的width
和height
更改为100%
并添加preserveAspectRatio="none"
.由于您使用的是
img
标签,这仅适用于width
或height
是固定值的情况,您必须使用JavaScript来使用JavaScript设置img
的width
或height
.这是一个例子 .
Note :在你的情况下,你必须设置
img
的height
.Fiddle
在支持它的浏览器中,您可以使用an SVG fragment identifier关闭图像的viewBox . Firefox支持viewBox none(来自SVG 1.2微小规范)摆脱viewBox将允许在不强制纵横比的情况下显示图像 .
另一种方法是将preserveAspectRatio设置为none(片段标识符也可以这样做),即#svgView(preserveAspectRatio(none)),具体取决于你想要的 .
如果需要,您可以同时执行这两项操作 . 我在下面显示了preserveAspectRatio .
使用它作为您的css文件:
jsFiddle:http://jsfiddle.net/cwnkswpo/
I will improve my answer soon