18

我有以下CSS:

.mod.left {
background-image: url("http://www.myimage.jpg");
display: block;
height: 160px;
overflow: hidden;
width: 175px;
}

这对应于这个 HTML:

<div class="mod left"></div>

它导致了这个混乱:

在此处输入图像描述

如果我使用 css3 background-size: 175px 160px; 纵横比真的搞砸了,导致这样的混乱:

在此处输入图像描述

有没有办法拉伸图像以适应 div?但是以保持纵横比的方式?我想要自动裁剪。

4

5 回答 5

36

这应该有效(在支持的浏览器中background-size):

background-size: 175px auto;

你也可以试试:

background-size: cover;

或者:

background-size: contain;

MDC有一个很好的解释。

于 2011-09-12T22:59:37.980 回答
5

必须是背景图吗?

img{
width:300px;
height:auto;
}


<img src="your-photo.png">
于 2011-09-12T22:53:04.173 回答
3

您可以使用background-size具有以下值的属性contain

background-size: contain;

这是一个工作示例: https ://jsfiddle.net/gusrodriguez/auuk97hf/1/

在上面的示例中,主体在背景中具有拉伸图像。还有两个任意大小的 div,以及另一个适合并保持纵横比的图像。

于 2016-12-02T13:50:03.733 回答
2

您可以使用 CSS Object-fit属性。

{
 height: 160px;
 width: 175px;
 object-fit: cover;
}

Object-fit 可以具有以下值。

包含、覆盖、填充、无、按比例缩小。请参阅上面的链接了解更多信息。

于 2018-03-31T03:28:21.187 回答
1

如果使用 img 而不是背景,我发现了这种方法:

        min-width: 100%;
        max-width: 100%;
        min-height: 100%;
        max-height: 100%;
        object-fit: contain;
于 2020-04-26T13:56:43.503 回答