使用CSS按比例调整图像大小?

cod*_*ear 648 html css image-resizing

有没有办法使用ONLY CSS按比例调整大小(缩小)图像?

我正在做JavaScript方式,但只是想看看CSS是否可行.

小智 747

要使用CSS按比例调整图像大小:

img.resize {
    width:540px; /* you can use % */
    height: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • +1如果需要,您也可以使用`max-width`而不是`width`.关键是使用`height:auto`来覆盖图像上已存在的任何`height ="..."`属性. (65认同)
  • 常用的是设置`max-width:100%; height:auto;`如此大的图像不超过它们的容器宽度. (18认同)
  • 即使img标签具有高度和宽度属性,这也适用.+1 (7认同)
  • 如果您想使图像更大,这不起作用.图像失去纵横比.当然,除非容器具有相同的图像宽高比. (4认同)
  • 在我使用的情况下,高度是固定的,我将宽度设置为自动:)谢谢! (3认同)

Che*_*rif 221

控制尺寸和保持比例:

#your-img {
    height: auto; 
    width: auto; 
    max-width: 300px; 
    max-height: 300px;
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案更好......你可以在保持比率的同时设置宽度和高度的最大界限. (5认同)
  • 是的,这是问题的正确答案,因为它考虑了图像方向(即横向与纵向).谢谢! (4认同)

len*_*ooh 114

如果是背景图片,请使用background-size:contains.

示例css:

#your-div {
  background: url('image.jpg') no-repeat;
  background-size:contain;
}
Run Code Online (Sandbox Code Playgroud)

  • 或者`background-size:cover;`,它将覆盖整个区域. (15认同)

oro*_*ome 71

尝试

transform: scale(0.5, 0.5);
-ms-transform: scale(0.5, 0.5);
-webkit-transform: scale(0.5, 0.5);
Run Code Online (Sandbox Code Playgroud)

  • 不是那种空间.图像在文档中仍然具有相同的边界,宽度,高度,只有它们"看起来"小2倍.想象一下 - 尺寸为100x100的图像.然后应用比例(0.5),它与图像50x50相同,但两侧都有不可见的25px边框.图像仍将占用100x100空间. - (10认同)
  • 实际上,如果你必须按比例缩小每个图像的大小,这个效果非常好.使用此代码,图像变小2倍.+1但是!有了这个解决方案,图像仍然占据了空间! (7认同)
  • 这里有一个jsfiddle:http://jsfiddle.net/oy6t2xgL/ (2认同)

and*_*szs 49

请注意,它width:50%会将其大小调整为图像可用空间的50%,同时max-width:50%将图像大小调整为其自然大小的50%.在将此规则用于移动网页设计时,这一点非常重要,因此max-width应始终使用移动网页设计.

  • 嗯......至少在桌面上似乎不是这样的:http://jsfiddle.net/nLh1oh5e/ (7认同)
  • 这对我来说似乎也不是这样. (6认同)

Pra*_*K C 47

通过保持纵横比来缩放图像

试试这个,

img {
  max-width:100%;
  height:auto;
}
Run Code Online (Sandbox Code Playgroud)


And*_*nko 41

您可以使用object-fit属性:

.my-image {
    width: 100px;
    height: 100px;
    object-fit: contain;
}
Run Code Online (Sandbox Code Playgroud)

这将适合图像,而不是按比例改变.

  • 这应该是公认的答案 (3认同)

Pet*_*trV 30

2015年重访:

<img src="http://imageurl" style="width: auto; height: auto;max-width: 120px;max-height: 100px">
Run Code Online (Sandbox Code Playgroud)

我已经重新审视了它,因为所有常见的浏览器现在都有Cherif上面提到的自动工作,因此你可以更好地工作,因为你不需要知道图像是否比更高更宽.

旧版本:如果您受限于120x100的盒子,例如你可以做到

<img src="http://image.url" height="100" style="max-width: 120px">
Run Code Online (Sandbox Code Playgroud)


Sha*_*awn 23

css属性max-width和max-height工作得很好,但IE6不支持,我相信IE7.您可能希望在高度/宽度上使用此值,这样您就不会意外地缩放图像.您只想按比例限制最大高度/宽度.

  • 这似乎是定位支持HTML5的浏览器的最佳方式. (2认同)

Adr*_*ien 22

<img style="width: 50%;" src="..." />
Run Code Online (Sandbox Code Playgroud)

对我来说工作得很好......或者我错过了什么?

编辑:但看到肖恩关于意外升迁的警告.


Gen*_*ght 13

使用这种简单的缩放技术

img {
    max-width: 100%;
    height: auto;
}
@media {
  img { 
    width: auto; /* for ie 8 */
  }
}
Run Code Online (Sandbox Code Playgroud)


phe*_*eon 13

img{
    max-width:100%;
    object-fit: scale-down;
}
Run Code Online (Sandbox Code Playgroud)

适合我.它缩小较大的图像以适合框,但将较小的图像留下原始大小.


cRE*_*ker 8

我相信这是最简单的方法,也可以通过标记中的inline style属性使用<img>

.scaled
{
  transform: scale(0.7); /* Equal to scaleX(0.7) scaleY(0.7) */
}

<img src="flower.png" class="scaled">
Run Code Online (Sandbox Code Playgroud)

要么

<img src="flower.png" style="transform: scale(0.7);">
Run Code Online (Sandbox Code Playgroud)

  • 我测试了它,但是我认为它效率很低,因为这样做,边界框模型保持不变。您可能不想这样做,但我知道这可能很有用,也许 (2认同)