ChatGPT解决这个技术问题 Extra ChatGPT

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

在我的网站上,我想在具有特定尺寸 (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 选择器不会影响外观”。 ;^)(不知道是否最好编辑问题以询问其标题所暗示的含义......)

s
sandeep

你可以这样写:

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

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


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

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

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

K
Kamlesh Uikey

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

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

img.Image{
    display: inline-block;
}

L
Leo Armentano

给定您的容器宽度 600px。

如果您只想要更大的图像以适合内部,请添加:CSS:

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

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

#ImageContainer img {
    width: 600px;
}

此外,对 OP 的评论表明您在 CSS 文件中使用了错误的 id: div#ImageContainer 与
不同
K
Krish

尝试这个

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

这是不正确的。您的选择器表示“图像元素内的 img 元素”。
R
Rhythm Ruparelia

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

img.Image { 最大宽度:100%;显示:块; } div#ImageContainer { 宽度:600px; }


j
jstaab

将元素包装在具有固定宽度/高度的 div 中:

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