html - HTML 错误?即使父母身高固定,某些元素也会影响远祖的身高
问题描述
为什么即使其直接父级具有固定高度,这些元素也会影响远祖的高度?
这里有一个两行两列的简单表格:
<table>
<tr class="row">
<td>text</td>
<td class="column">
<div id="problem1"></div>
<div class="text">foo</div>
</td>
</tr>
<tr class="row">
<td>text</td>
<td class="column">
<div id="problem2">
<img>
</div>
<div class="text">foo</div>
</td>
</tr>
</table>
使用此样式表:
.row {
background-color: #aaa;
}
.column {
display: flex;
align-items: center;
width: 500px;
height: 55px;
background-color: #888;
}
#problem1 {
background-color: red;
height: 200px;
width: 10px;
}
#problem2 {
background-color: blue;
height: 200px;
width: 20px;
}
#problem2 img {
background-color: green;
height: 200px;
width: 10px;
}
我期望的是行的高度跟随最高列的高度。在这种情况下,在 CSS 中.column
有一个固定的高度。55px
相反, 的孩子.column
正在影响行的高度。
在第一个示例中, 的直接子级.column
设置其高度.row
这里,红色元素是列的子元素(浅灰色),它是一个列,并且具有固定高度为 55px 的行(深灰色)
但是,在第二行中,嵌套的子级(在本例中为img
)是确定.row
. 奇怪的是,当我将 更改img
为不同类型的元素 ( div
) 时,它并没有影响.row
.
这里,HTML 层次结构是行 > 列 > 蓝色 > 绿色
此外,设置一个.row
小于影响高度的最大后代的高度将不起作用。即使!important
对于 height 属性。就好像后代的身高优先于.row
.
直到我遇到这样的情况,我认为 HTML 元素只能影响其直接父级的维度,而不是超过 1 级的祖先(除非维度/属性通过其父级传播并且祖先没有固定的高度宽度)
相当诡异的结果。如果有人能解释发生了什么或向我指出正确的资源以了解这种情况,我将不胜感激。
感谢您的时间。
这是一个说明帖子的小提琴:https ://jsfiddle.net/u2745hjy/1/
解决方案
您不能阻止child
高度超过parent
. 相反,您可以使用height: 100%
tochild
以使其parent
具有高度。或者您可以设置overflow: auto
为parent
,scroll
如果它们child
的高度高于该高度
推荐阅读
- react-native - 如何在本机反应中删除材料底部选项卡的背景颜色
- typescript - 如果通过括号表示法访问函数的属性,如何让 TypeScript 出错?
- sql - 如何在包含星号的文本单元格上运行 Google 表格查询
- python - 尝试后如何正确等待检查 Excel 实例是否已关闭?
- dialogflow-es - 如何在回退意图上返回用户消息?
- git - Git 不会克隆模板目录的内容
- java - 使用 Spring 在 REST API 中显示图像时的黑色背景
- python - Visual Studio 代码“editor.showUnused”:真的不工作
- vba - 保存演示文稿中的动画状态
- javascript - 如何在选择中间的文本突出显示弹出窗口?