gpt4 book ai didi

html - 了解为什么表格单元格不包含其 100% 高度内容

转载 作者:行者123 更新时间:2023-11-28 14:29:36 25 4
gpt4 key购买 nike

原始问题(已编辑)

CSS: Why table-cell sibling with height 100% exceeds table-row body

我正在测试 CSS 表格。在我的一项测试中,我试图获得等高的列布局。

  • 我想要左侧的“旁边”,它应该填充 100% 的页面高度(例如列)。
  • 在“旁白”的右边,我想要一个“标题”在“主要”内容之上。
  • 我希望“header”和“main”填充 100% 的页面高度。
  • 我希望整个布局高度随着内容的增长而增长。

这是我的测试示例:https://jsfiddle.net/264z0ovf/

我将“aside”设置为表格单元格并将“main”高度设置为 100%。这导致“main”恰好具有其父级高度的 100% 并溢出“body”的底部。

您能解释一下为什么 100% 高度的“main”会溢出“b​​ody”表格行吗?

我没想到会溢出。我认为“main”会填充“header”下方的剩余空间,或者填充整个高度的表格。

html,
body {
margin: 0;
height: 100%;
}

html {
display: table;
}

body {
background-color: #0000ff;
display: table-row;
}

aside {
background-color: #00ff00;
display: table-cell;
}

header {
background-color: #909090;
}

main {
background-color: #ffffff;
height: 100%;
}
<html>

<body>
<aside>ASIDE</aside>
<header>HEADER<br>AND SOME CONTENT</header>
<main>MAIN</main>
</body>

</html>

长话短说

我知道高度百分比是根据 parent 的高度计算的。
因此,如果“主要”高度为 100%,则表示“ body ”的 100%。

“header”旁边是一个兄弟匿名表格单元格,它应该包含“aside”和“main”。所以 body table-row 也应该随着它的细胞增长而增长。
来自 https://www.w3.org/TR/CSS21/tables.html#anonymous-boxes

Any table element will automatically generate necessary anonymous table objects around itself

这是另一个“main”没有溢出表的例子:https://jsfiddle.net/80a53fvs/

  • 我添加了一个 100% 高度的 div 表来包裹“header”和“main”。
  • 我将“main”更改为表格行并将其高度保留为 100%。

这会导致“main”填充“header”下方的剩余高度而不会溢出表格。

html, body {
margin: 0;
height: 100%;
}

html {
display: table;
}

body {
background-color: #0000ff;
display: table-row;
}

aside {
background-color: #00ff00;
display: table-cell;
}

div {
display: table;
height: 100%;
}

header {
background-color: #909090;
}

main {
background-color: #ffffff;
height: 100%;
display: table-row;
}
<html>
<body>
<aside>ASIDE</aside>
<div>
<header>HEADER<br>AND SOME CONTENT</header>
<main>MAIN</main>
</div>
</body>
</html>

最佳答案

添加

body {
overflow: hidden;
}

html,
body {
margin: 0;
height: 100%;
}

html {
display: table;
}

body {
background-color: #0000ff;
display: table-row;
overflow: hidden;
}

aside {
background-color: #00ff00;
display: table-cell;
}

header {
background-color: #909090;
}

main {
background-color: #ffffff;
height: 100%;
}
<html>
<body>
<aside>ASIDE</aside>
<header>HEADER<br>AND SOME CONTENT</header>
<main>MAIN</main>
</body>
</html>

关于html - 了解为什么表格单元格不包含其 100% 高度内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com