流体宽度表中的响应图像(最大宽度)

Posted

技术标签:

【中文标题】流体宽度表中的响应图像(最大宽度)【英文标题】:Responsive images in a fluid-width table (max-width) 【发布时间】:2012-08-06 02:31:48 【问题描述】:

考虑以下代码:

HTML:

<div>
    <img src="http://placehold.it/600x150" />
</div>

CSS:

div  max-width: 200px 
img  max-width: 100%  ​

无论其原始尺寸如何,图像的宽度都不会超过 200 像素。到目前为止一切顺利。

这是小提琴:http://jsfiddle.net/PeAAb/


但是,如果父元素的display 设置为table

div  max-width: 200px; display: table 

图像神奇地扩展至其原始宽度,同时扩展table

这是小提琴:http://jsfiddle.net/PeAAb/1/


实际表格也会发生同样的情况:http://jsfiddle.net/PeAAb/2/


问题:这是预期的行为吗?如果是这样,可以做些什么来解决这个问题?

设置父级的 width(甚至是基于百分比的宽度)而不是 max-width 可以正确地将图像压缩回其框中,但这不是解决方案。我需要父母是流动的(我将它用于网站的主要结构,这样我就可以拥有the sidebar html appear after the main content in the source, but with the sidebar being fixed width)。

另外,setting table-layout to fixed 这里似乎有no effect。

【问题讨论】:

我正在尝试在 SharePoint 2010 中构建一些响应式的东西,它有一个非常讨厌的习惯,就是将嵌套表包裹在事物周围。如果您知道对此的解决方案(可以追溯到 IE8),我很想听听。 @pKs 的解决方案 (display:block;) 在 IE8/9 中失败:( 【参考方案1】:

我知道这已经很晚了,但找到了答案,结果非常简单且超级容易,表格布局:已修复。

在这里找到:http://blog.room34.com/archives/5042

无论如何,这是为那些像我一样寻找这个难题的答案的人准备的。

【讨论】:

我将简要解释或解释这篇文章为什么 table-layout: fixed 在这里是一个答案,特别是因为 OP 说这对他不起作用。 这只适用于指定的宽度。问题是如何使用max-width 设置来实现这一点。父级必须是流体宽度。【参考方案2】:

这里的问题是表格(或设置为像表格一样的 div)不是块元素,max-width 仅适用于块元素。我对你的唯一建议是将表格元素包装在一个带有 display: block; 的 div 中。设置。

如果你有兴趣,这里是小提琴:http://jsfiddle.net/PeAAb/4/

【讨论】:

感谢您的正确回答,但就我而言,这对我没有帮助。看看my demo。它在 webkit 中正常工作,但在其他地方没有。在其中包裹另一个元素 does not help. 我不情愿地接受这个答案,因为它是正确的。但是,它并没有解决问题。 约瑟夫,感谢您的接受。我希望我能解决您的问题,因为我通常不喜欢发布“无法完成”的回复——但经过一些研究并结合我自己的个人经历,我无法想出一个很好的解决你的问题。事实上,这让我很困惑。我期待听到任何比我能更好地解决这个问题的人的意见。

以上是关于流体宽度表中的响应图像(最大宽度)的主要内容,如果未能解决你的问题,请参考以下文章

响应式网页设计中的宽度与最大宽度

使用最大宽度和绝对定位将流体 DIV 居中

使用带有响应式设计/流体宽度 CSS 的 jCrop

流体宽度不起作用

位置2并排流体/响应(未知宽度)

Gatsby - 从 csv 文件中的参考字段制作流体图像宽度 ImageSharp