这个问题在stackoverflow上至少有10次被问到,但其中没有一个实际上有答案。这个问题略有不同,因为问题出现在Firefox中。
我的身高table
为100%,身高tr
为100%。我将td
的边界设置为我能看到的东西。我看到td
是100%的预期。我在div
中添加td
并将其设置为100%的高度。它在Chrome中是100%。它在Firefox中不是100%。
我该如何解决这个问题?
实施例
<!DOCTYPE html>
<html>
<head>
<style>
body, html {
width: 100%;
height: 100%;
padding: 0px;
margin: 0px;
}
.full {
width: 100%;
height: 100%;
border: 10px solid red;
}
#content {
width: 100%;
height: 100%;
}
#content>table {
width: 100%;
height: 100%;
}
#content>table>tbody>tr>td {
border: 10px solid blue;
width: 50%;
}
#container {
width: 100%;
height: 100%;
border: 10px solid black;
}
</style>
</head>
<body>
<div id="content">
<table>
<tr>
<td>
<div id="container">
<div class="full">
foo
</div>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>
这是一个片段
body, html {
width: 100%;
height: 100%;
padding: 0px;
margin: 0px;
}
.full {
width: 100%;
height: 100%;
border: 10px solid red;
}
#content {
width: 100%;
height: 100%;
}
#content>table {
width: 100%;
height: 100%;
}
#content>table>tbody>tr>td {
border: 10px solid blue;
}
#container {
width: 100%;
height: 100%;
border: 10px solid black;
}
<div id="content">
<table>
<tr>
<td>
<div id="container">
<div class="full">
foo
</div>
</div>
</td>
</tr>
</table>
</div>
在Chrome中你会看到
bbbbbbbbbbb
b#########b
b#rrrrrrr#b
b#r r#b
b#r r#b
b#r r#b
b#rrrrrrr#b
b#########b
bbbbbbbbbbb
而在Firefox中它是
bbbbbbbbbbb
b b
b#########b
b#rrrrrrr#b
b#r r#b
b#rrrrrrr#b
b#########b
b b
bbbbbbbbbbb
其中b =蓝色td
。 #=黑色div应该是100%。 r =红色内部div也应该是100%(显然在任何一种情况下)。这是黑色的错误。
在这种情况下,我需要修复哪些CSS才能使Firefox像Chrome一样?
PS:是的,我需要一张桌子。我正在显示表格数据。上面的示例简化为单个单元格以简化调试。
答案 0 :(得分:21)
答案 1 :(得分:2)
我认为这是因为firefox需要所有元素在css中都有100%的高度,包括你的TD。
#content>table>tbody>tr>td {
border: 10px solid blue;
width: 50%;
height: 100%;
}
用它来使用firefox。
答案 2 :(得分:0)
CSS 通常需要一些技巧。
为什么不给所有 div 添加一个很大的填充和负边距,并隐藏 tds 溢出?
td {
padding: 1rem 2rem;
max-width: 6rem;
overflow: hidden;
}
td > div {
margin: -150px;
padding: 150px;
}
这是一支笔:https://codepen.io/migli/pen/ZEKXWGE
我没有在很多浏览器中测试过,但我想它应该适用于任何地方?