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

Posted

技术标签:

【中文标题】如何在 CSS 中设置图像的最大宽度【英文标题】:How to set max width of an image in CSS 【发布时间】:2012-06-20 04:34:24 【问题描述】:

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

我尝试了max-width CSS 属性,但它不起作用:图像的大小没有改变。

有没有办法解决这个问题?

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 文件夹之外)。

【问题讨论】:

如果你想让它自动缩小,只需设置max-width,不要设置max-height,它应该可以工作。如果没有,请发布您的代码,以便其他人可以帮助您发现问题。 我刚试过你的例子,它在这里工作。您确定您的实际 html(“ImageContainerr”)中没有与本示例中相同的错字吗? 该死,你是对的。我重新启动了我的 Tomcat 和浏览器,又试了一次——它真的很好用。无论如何谢谢 :) 错字不是这种情况 - 我在这里更改了 id 和类名,这样更容易理解。 据此,我假设您不使用 Firebug 或其他开发人员工具。我建议你让自己使用 Firebug 并学习使用它。 (通过检查这两个元素,您会发现宽度没有添加到容器中。) 警告:这个问题的适用范围远不如最初出现的那么广泛。看起来很多赞成票可能是因为那些赞成票的人也错过了这里的 id 与 CSS 不匹配。正如所写的 (20151201),这个问题归结为“与任何 DOM 对象不匹配的 CSS 选择器不会影响外观”。 ;^) (不知道是否最好编辑问题以询问其标题所暗示的含义......) 【参考方案1】:

你可以这样写:

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

查看http://jsfiddle.net/ErNeT/

【讨论】:

非常感谢!这完美!编辑:嗯,不是很精确 - 它还会调整小于 600 像素的图像的大小 - 这是我不想要的。 我投了反对票。 OP想要的不是你提供的。您还应该意识到 OP 的代码中可能存在问题,因为通常他尝试过的应该可以工作。曾经投票过的人,给我一个理由,谢谢。 @Lollero first OP 在我回答后编辑他的问题 & 你能解释一下我的回答有什么问题吗?谢谢 这不会在 IE 中保留纵横比 “width:100%”的目的是什么?没有它,链接的小提琴似乎可以正常工作? (在 Mac OX 上的 Firefox 和 Safari 中测试)【参考方案2】:

我看到这还没有作为最终答案。

我看到你的最大宽度为 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">

【讨论】:

【参考方案3】:

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

所以要限制img标签的宽度首先你需要将它转换成一个内联块元素

img.Image
    display: inline-block;

【讨论】:

【参考方案4】:

鉴于您的容器宽度为 600 像素。

如果您只想放入比图片更大的图片,请添加: CSS:

#ImageContainer img 
    max-width: 600px;

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

#ImageContainer img 
    width: 600px;

【讨论】:

另外,OP 上的 cmets 表明您在 CSS 文件中使用了错误的 id:div#ImageContainer 与 不同 【参考方案5】:

试试这个

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

【讨论】:

这是不正确的。您的选择器表示“图像元素内的 img 元素”。【参考方案6】:

您的 css 几乎是正确的。您只是在图像 css 中缺少 display: block;。 你的身份证上还有一个错字。应该是&lt;div id="ImageContainer"&gt;

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

【讨论】:

【参考方案7】:

将元素包裹在一个固定宽度/高度的 div 中:

<div style="width: 600px;">
  <img src="whatever" />
</div>

【讨论】:

以上是关于如何在 CSS 中设置图像的最大宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CSS 网格布局中设置列的最大宽度?

如何在 IE 中设置 svg+xml 图像的最大宽度?

Android:如何在 android constraintLayout 中设置视图的最大宽度?

Android:如何在 android constraintLayout 中设置视图的最大宽度?

如何在 colorbox iframe 中设置图像的高度和宽度?

如何在 iOS 中设置视图的最大宽度?