考虑HTML页面中的以下SVG图像:
<img src="https://keyller.io/generators/fr/solfege/cle-de-sol/img/treble-clef-9-sol.svg">
将以下CSS应用于图像:
img {
position: absolute;
left: 500px;
}
当图像接近视口的右极限时,将调整图像的大小以完全适合页面。
JSFiddle:https://jsfiddle.net/Imabot/hr6mowxp/1/
如果我用jpg替换图像,图像现在会溢出,并且不会调整大小。
JSFiddle:https://jsfiddle.net/Imabot/hr6mowxp/2/
因此,以下SVG溢出:
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Stack_Overfl
ow_logo.svg">
JSFiddle:https://jsfiddle.net/Imabot/hr6mowxp/3/
有人能解释一下为什么第一个SVG的大小被调整,而其他图像溢出?
如何在第一个图像上执行溢出而不是调整大小?
1条答案
按热度按时间bxgwgixi1#
为什么会这样呢?因为SVG不仅仅是一个图像,它还是一个文档。
当你包含一个带有
<iframe>
的HTML文件时,当你改变框架的大小时,你不希望里面的文本缩放。SVG也是如此。相反,SVG图像可以以任何像素大小绘制,因此它们不需要明确定义的高度或宽度。而且它们并不总是具有明确定义的宽高比。如果您希望SVG缩放以适应您给予它的尺寸(即
min-width
),则需要显式提供此信息(以及更多信息)。有用的文章:How to Scale SVG | CSS-Tricks - CSS-Tricks
要执行溢出,你可以简单地添加一个
min-width
,如下所示:编辑:
SO svg声明了一个
width
和height
,而另一个没有。SO svg将尝试维护这个width
,这导致了你看到的overflow
。你会注意到,如果音乐svg上声明了width
,那么它会按照你的要求导致溢出。宽度未定义:
定义的宽度:
svg[Attributes Style] {width: 800.12;}
在聊天中解决了静态宽度和
vmin
max-height
和max-width
以及object-fit: cover;