如何在CSS中设置图像的最大宽度


84

在我的网站上,我想在新窗口中显示用户上传的具有特定大小(width: 600px)的图像。问题在于图像可能很大。因此,如果它们大于这些600px尺寸,我想调整它们的尺寸,并保留宽高比。

我尝试了max-widthCSS属性,但是它不起作用:图像的大小不变。

有什么办法解决这个问题?

HTML

<div id="ImageContainerr">
    <img src="DisplayImage.do?ad_id=${requestScope.advert.id}" class="Image" />
</div>

CSS

img.Image { max-width: 100%;}
div#ImageContainer { width: 600px; }

我也尝试max-width: 600px为图片设置,但是不起作用。图像是从Servlet传输的(存储在Tomcat的webapps文件夹外部)。


1
如果您希望它自动缩小,只需设置max-width,不要设置max-height它就可以了。如果没有,请发布您的代码,以便其他人可以帮助您发现问题。
Ray Cheng

2
我只是尝试了您的示例,它在这里有效。您确定您的实际html(“ ImageContainerr”)中的错字与本示例中的错吗?
李斯特先生,2012年

该死,你是对的。我重新启动了Tomcat和浏览器,然后再次尝试-确实工作正常。无论如何,谢谢:)错字不是这种情况-我在这里更改了id和class名称,这样更容易理解。
user1315305 2012年

3
由此,我假设您不使用Firebug或其他开发人员工具。我建议您让自己熟悉Firebug并学习使用它。(通过检查这两个元素,您会发现宽度没有添加到容器中。)
Joonas 2012年

2
警告:这个问题的适用范围远不及最初出现的那样。看起来很多支持者可能是因为那些支持者还错过了id与CSS不匹配的地方。如所写(20151201),此问题归结为“与任何DOM对象都不匹配的CSS选择器不会影响外观”。; ^)(无法确定是否最好编辑问题以询问其标题所隐含的含义……)
ruffin

Answers:


133

您可以这样写:

img{
    width:100%;
    max-width:600px;
}

检查此http://jsfiddle.net/ErNeT/


非常感谢!很好用!编辑:好吧,不是太夸张-它还会调整小于600px的图像的大小-这是我不想要的。
user1315305 2012年

3
我投了反对票。OP想要的不是您提供的。您还应该意识到,OP的代码中可能存在问题,通常会导致他尝试过,应该起作用。
乔纳斯(Juonas)2012年

1
@Lollero首先在我回答后编辑他的问题,您能解释我的回答有什么问题吗?谢谢
sandeep 2012年

2
这不会保留IE中的宽高比
Cocowalla 2013年

1
“宽度:100%”的目的是什么?没有它,链接的小提琴似乎可以正常工作吗?(在Mac OX上的Firefox和Safari中经过测试)
Jon Schneider

12

我看到这还没有最终解决。

我看到您的最大宽度为100%,宽度为600。翻转它们。

一个简单的方法也是:

     <img src="image.png" style="max-width:600px;width:100%">

我经常使用它,然后您也可以控制单个图像,而不必在所有img标签上使用它。您也可以像下面这样使用CSS。

 .image600{
     width:100%;
     max-width:600px;
 }

     <img src="image.png" class="image600">

5

问题是img标签是内联元素,您不能限制内联元素的宽度。

所以首先要限制img标签的宽度,您需要将其转换为inline-block元素

img.Image{
    display: inline-block;
}

3

给定您的容器宽度600px。

如果您只想容纳比其大的图像,请添加:CSS:

#ImageContainer img {
    max-width: 600px;
}

如果您希望所有图像都占用可用的(600px)空间:

#ImageContainer img {
    width: 600px;
}

另外,OP上的注释表明您在CSS文件上使用了错误的ID:div#ImageContainer与<div id =“ ImageContainerr”>不同
Leo Armentano

1

试试这个

 div#ImageContainer { width: 600px; }
 #ImageContainer img{ max-width: 600px}

1
那是不对的。您的选择器的意思是“ Image元素内的img元素”。
李斯特先生,2012年

0

您的CSS几乎是正确的。您只是display: block;在图像CSS中丢失了。您的身份证上也有错字。它应该是<div id="ImageContainer">

img.Image { max-width: 100%; display: block; }
div#ImageContainer { width: 600px; }
<div id="ImageContainer">
    <img src="http://placehold.it/1000x600" class="Image">
</div>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.