【发布时间】:2013-07-24 09:37:13
【问题描述】:
我有一块 HTML/CSS 在 Firefox (22.0) 和 Chrome (28.0.1500.71) 中表现不同。我试图找出原因。我创建了一个 jsfiddle,以便可以轻松观察到生成的输出。 http://jsfiddle.net/treejanitor/Q8zn4/3/
下面的源代码试图在表格单元格上覆盖简单的背景颜色,其中一组 div 元素嵌套在带有display: table 的 div 下。只有标记有 playbtn 类的表格单元格才应该有覆盖。
在确定盒子模型尺寸时,table-cell CSS 似乎对 Firefox 有问题。出于某种原因,top/bottom/left/right CSS 属性错误地使用了最外面的块,tbl 类'<div>。这似乎不是 Chrome、Safari、IE9+ 的问题。
当我将 CSS 显示值从 table-cell 更改为 inline-block 时,我相信我得到了我想要的行为,但我没有进一步追求它;我需要display: table-cell 才能正确管理更复杂的表格显示,包括均匀分布的表格单元格之间的间距。
有人有什么想法吗?
HTML
<div class="tbl">
<div>
<div>
<img src="http://placekitten.com/200/240" />
<div class="playbtn"></div>
</div>
<div>Description</div>
</div>
<div>
<div>
<img src="http://placekitten.com/200/240" />
<div class="playbtn"></div>
</div>
<div>Description</div>
</div>
</div>
CSS
.tbl {
display: table;
}
.tbl > div {
display: table-row;
}
.tbl > div > div {
position: relative;
display: table-cell;
vertical-align: middle;
padding: 5px;
}
div.playbtn {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
background: blue;
background-size: 100%;
opacity: 0.3;
}
【问题讨论】:
-
+1 格式良好,易于测试等
-
查看stackoverflow.com/questions/5148041/… 了解更多详细信息和可能的解决方案。
-
嗯,似乎与这个问题相似 - 希望不要重复它。 stackoverflow.com/questions/16571910/…
-
@kalley - 我从你建议的链接中得到了明确的线索。用
div和position:relative包裹单元格的内容让我非常接近。
标签: css google-chrome firefox overlay css-tables