协慌网

登录 贡献 社区

如何自动调整图像大小以适合 “div” 容器?

如何自动调整大图像的大小,使其适合较小宽度的 div 容器,同时保持其宽度:高度比?


示例:stackoverflow.com - 当图像插入编辑器面板并且图像太大而无法放入页面时,图像会自动调整大小。

答案

不要对图像标记应用明确的宽度或高度。相反,给它:

max-width:100%;
max-height:100%;

另外, height: auto;如果只想指定宽度。

示例: http//jsfiddle.net/xwrvxser/1/

img {
    max-width: 100%;
    max-height: 100%;
}

.portrait {
    height: 80px;
    width: 30px;
}

.landscape {
    height: 30px;
    width: 80px;
}

.square {
    height: 75px;
    width: 75px;
}
Portrait Div
<div class="portrait">
    <img src="http://i.stack.imgur.com/xkF9Q.jpg">
</div>

Landscape Div
<div class="landscape">
    <img src="http://i.stack.imgur.com/xkF9Q.jpg">
</div>

Square Div
<div class="square">
    <img src="http://i.stack.imgur.com/xkF9Q.jpg">
</div>

对象的合

事实证明还有另一种方法可以做到这一点。

<img style='height: 100%; width: 100%; object-fit: contain'/>

会做的工作。这是 CSS 3 的东西。

小提琴: http//jsfiddle.net/mbHB4/7364/

目前,无法以确定的方式正确地执行此操作,使用固定大小的图像(如 JPEG 或 PNG 文件)。

要按比例调整图像大小,你必须设置高度宽度为 “100%”,但不能同时使用。如果将两者都设置为 “100%”,则图像将被拉伸。

选择是做高度还是宽度取决于您的图像和容器尺寸:

  1. 如果您的图像和容器都是 “纵向形状” 或两者都是 “横向形状”(分别高于它们的宽度或宽度),那么高度或宽度中的哪一个都是 “%100” 无关紧要。
  2. 如果您的图像是纵向,并且容器是横向的,则必须在图像上设置height="100%"
  3. 如果您的图像是横向图像,而容器是纵向图像,则必须在图像上设置width="100%"

如果您的图像是 SVG(可变大小的矢量图像格式),则可以使扩展适合容器自动发生。

您只需确保 SVG 文件在<svg>标记中没有设置这些属性:

height
width
viewbox

导出 SVG 文件时,大多数矢量绘图程序都会设置这些属性,因此每次导出时都必须手动编辑文件,或编写脚本来执行此操作。