<img>元素和显示:table-cell

c-s*_*ile 8 html css

我试图替换单个水平行中的图像 - 作为表格行中的单元格.

该布局适用于任何其他元素,但<img>由于某种原因不适用.

检查一下:

div { display:table; border:1px solid red; }
div > img { display:table-cell; }
Run Code Online (Sandbox Code Playgroud)
<p>These shall be replaced in single row but they are not:</p>

<div>
  <img src="http://lorempixel.com/output/city-q-c-78-50-6.jpg">
  <img src="http://lorempixel.com/output/people-q-c-78-50-5.jpg">
  <img src="http://lorempixel.com/output/animals-q-c-78-50-5.jpg">
</div>
Run Code Online (Sandbox Code Playgroud)

任何的想法?

更新:FF遵循CSS规范并将其替换为单行.所有其他浏览器都没有.Heil Firefox!

zer*_*0ne 1

编辑

img 是替换元素,它的测量计算和盒子模型不同。请参阅这篇文章


如果您坚持使用表格并且担心间距,请查看 @ StevenThomas 的 PenCode的这个分支

我删除了所有的div

.container { display: table; table-layout: auto; width: 100%; }

img { display: inline-table; margin: .33em; width: 30%; height: auto; }
Run Code Online (Sandbox Code Playgroud)

margin: .125em如果你想要 4px,请使用;边框间距。


将 div 更改为内联块

将 img 更改为内联块

.container { display: table; table-layout: auto; width: 100%; }

img { display: inline-table; margin: .33em; width: 30%; height: auto; }
Run Code Online (Sandbox Code Playgroud)
div {
  display: inline-block;
  border: 1px solid red;
}
div > img {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是可行的(就像评论中建议的其他方法一样),但它没有回答OP的问题。为什么不能将“img”设置为“display-cell”? (2认同)