2009-04-24 83 views
554

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

我正在做JavaScript的方式,但只是试图看看这是否可能与CSS。

+0

Ethan Marcotte最近[调查此iss非常透彻](http://unstoppablerobotninja.com/entry/fluid-images/)。简短的答案是肯定的,这是可能的,但不是所有的浏览器。 – 2009-04-25 00:02:13

+0

如果您不想刻录带宽,[slimmage.js](http://github.com/imazen/slimmage)可以提供帮助;它会读取最终的“max-width”值来调整请求的大小图像。 – 2013-07-08 16:05:57

+0

你可以设置图像的宽度,高度是自动调整的。 – 2014-04-08 18:54:44

回答

20
<img style="width: 50%;" src="..." /> 

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

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

+0

对不起,我喜欢分开网站的内容和设计。 我完全知道,添加宽度规则工作正常,我最初有。谢谢:) – codingbear 2009-04-25 00:09:40

+0

由于某种原因,这是唯一的选择,为我工作..谢谢:) – 2017-02-17 10:46:59

23

css属性最大宽度和最大高度工作很好,但不支持IE6,我相信IE7。你会想在高度/宽度上使用这个,所以你不会意外地缩放图像。您只需按比例限制最大高度/宽度。

+2

这似乎是针对HTML5的浏览器的最佳方式。 – Nestor 2010-09-15 03:27:42

+0

它在MSIE> = 7中工作:http://www.cssportal.com/css-properties/max-width.php – gouessej 2015-06-17 08:32:55

+0

我很高兴旧IE浏览器的东西变得无关紧要。 – 2018-02-08 12:26:52

633

要调整图像比例使用CSS:

img.resize { 
    width:540px; /* you can use % */ 
    height: auto; 
} 
+5

即使img标签具有高度和宽度属性,也可以使用。 +1 – 2012-06-11 19:48:13

+54

+1如果需要,也可以使用'max-width'而不是'width'。关键是使用'height:auto'来覆盖图像上已经存在的任何'height =“...”'属性。 – Phrogz 2012-07-30 17:30:07

+1

在我的情况下,我用,高度是固定的,我把宽度设置为自动:)谢谢! – KarenAnne 2013-01-28 08:45:36

30

在2015年回顾:

<img src="http://imageurl" style="width: auto; height: auto;max-width: 120px;max-height: 100px"> 

我重新审视它作为所有常见的浏览器现在已经工作自动谢里夫上述建议,使作品更好,因为你不需要知道图像是否比较高。

旧版本: 如果你是的120x100例如框限制,你可以做

<img src="http://image.url" height="100" style="max-width: 120px"> 
182

控制规模,保持比例:

#your-img { 
    height: auto; 
    width: auto; 
    max-width: 300px; 
    max-height: 300px; 
} 
+0

问题是,最大宽度和最大高度不被所有浏览器解释,如IE,对不对? – alexserver 2014-04-09 19:15:52

+1

@alexserver它在MSIE> = 7中工作:http://www.cssportal.com/css-properties/max-width.php – gouessej 2015-06-17 08:31:59

+4

这个答案更好...你可以设置宽度和高度的最大边界,同时保持比例。 – olivarra1 2015-10-30 10:47:13

4
img { 
    max-width:100%; 
} 

div { 
    width:100px; 
} 

在这个片段中,你可以做它在一个更有效的方式

47

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

+6

嗯......至少在桌面上似乎不是这种情况:http://jsfiddle.net/nLh1oh5e/ – Campbeln 2014-10-09 03:07:45

+5

这似乎也不是我的情况。 – jasonleonhard 2014-11-24 22:15:30

+1

谢谢你打电话给我。它有很大的不同。 (至少,我注意到) – contactmatt 2016-02-24 03:11:10

39

为了通过保持其宽高比

尝试这个缩放图像,

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

如果它是一个背景图像,使用背景尺寸:含有。

范例CSS:

#your-div { 
    background: url('image.jpg') no-repeat; 
    background-size:contain; 
} 
+11

或'background-size:cover;',它将覆盖整个区域。 – Turion 2014-05-17 13:15:43

+1

background-size:contains;为我工作。 – jasonleonhard 2014-11-24 22:16:56

+0

同时加上你想要的宽度和高度= 100% – 2015-04-28 13:27:34

65

尝试

transform: scale(0.5, 0.5); 
-ms-transform: scale(0.5, 0.5); 
-webkit-transform: scale(0.5, 0.5); 
+5

实际上,如果您必须按比例缩小每个图像的大小,它的效果会非常好。使用此代码图像变得更小2倍。 +1但是!有了这个解决方案,图像仍然占据了空间! – 2014-02-26 11:31:32

+0

@Mārtiņš布里斯:这不就是重点吗?有没有办法让服务器上的图像占用更少的空间“仅使用CSS”(请参阅​​OP)? – orome 2014-09-30 12:10:15

+7

不是那种空间。图像在文档中仍然具有相同的边界,宽度和高度,只有它们看起来小了两倍。想象一下 - 一个尺寸为100x100的图像。然后你应用比例尺(0.5),它与图像50x50相同,但在两侧都有不可见的25px边框。图像仍然会占用100x100的空间。 - – 2014-09-30 12:25:03

2

你总是需要这样的

html 
{ 
    width: 100%; 
    height: 100%; 
} 

在你的CSS文件

+0

这是一个很好的答案,为什么这会得到downvoted?这是一种糟糕的做法还是什么? – OKGimmeMoney 2015-05-06 21:33:17

13

使用此易结垢的顶部技术

img { 
    max-width: 100%; 
    height: auto; 
} 
@media { 
    img { 
    width: auto; /* for ie 8 */ 
    } 
} 
2

试试这个:

div.container { 
    max-width: 200px;//real picture size 
    max-height: 100px; 
} 

/* resize images */ 
div.container img { 
    width: 100%; 
    height: auto; 
} 
26

可以使用对象配合属性:

.my-image { 
    width: 100px; 
    height: 100px; 
    object-fit: contain; 
} 

这将适合的图像,而无需按比例改变。

+0

我使用宽度100%和高度100%,也是对象适合包含。它就像一个魅力:)。而对象适合包含解决方案很简单 – 2016-11-20 06:47:57

+0

注意浏览器支持:https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit截至目前,没有IE和Android 4.4.4+。 – qix 2017-02-06 20:56:31

+1

这应该是被接受的答案 – 2017-07-04 21:12:01

2
img{ 
    max-width:100%; 
    object-fit: scale-down; 
} 

适合我。它缩小较大的图像以适应盒子,但将较小的图像保留为原始尺寸。

3

我们可以使用CSS在浏览器中使用媒体查询和响应式设计原则调整图像大小。

@media screen and (orientation: portrait) { 
img.ri { 
    max-width: 80%; 
    } 
} 

@media screen and (orientation: landscape) { 
 
    img.ri { max-height: 80%; } 
 
}

1

image_tag("/icons/icon.gif", height: '32', width: '32') 我需要设置高度:“50像素”,宽度:“50像素”图像标签,该代码从第一工程尽力注意我尝试了所有上面的代码但没有运气,所以这一个工程,这里是我的代码从我的_nav.html.erb:
<%= image_tag("#{current_user.image}", height: '50px', width: '50px') %>

+0

请添加一些解释。 – BlackBeard 2018-01-29 05:26:54