首页 >web前端 >css教程 >当父元素有'min-height”/'max-height”但没有显式高度时,为什么'height: 100%”在子元素上失败?

当父元素有'min-height”/'max-height”但没有显式高度时,为什么'height: 100%”在子元素上失败?

Patricia Arquette
Patricia Arquette原创
2024-12-26 20:36:10290浏览

Why Does `height: 100%` Fail on a Child Element When Its Parent Has `min-height`/`max-height` but No Explicit Height?

为什么当父元素有最小高度/最大高度值但没有指定高度值时,子元素上的 Height: 100% 无法应用?

考虑以下 HTML 和 CSS setup:

<div class="container">
  <div class="child"></div>
</div>
.container {
  background-color: red;
  width: 500px;
  min-height: 300px;
}

.child {
  background-color: blue;
  width: 500px;
  height: 100%;
}

在这种情况下,容器元素按照预期以 300px 的高度渲染,但尽管声明了 height: 100%,但子元素仍然没有任何高度。

但是,给容器元素添加一个小的高度值(例如 1px)会导致子元素突然充满整个容器,高度为300px:

.container {
  background-color: red;
  width: 500px;
  min-height: 300px;
  height: 1px;
}

.child {
  background-color: blue;
  width: 500px;
  height: 100%;
}

此行为源于 CSS 规范本身。当未明确定义元素的高度时,其子元素的百分比高度将失败。根据规范:

指定百分比高度。百分比是根据生成的盒子的包含块的高度计算的。如果未明确指定包含块的高度(即,它取决于内容高度),并且该元素不是绝对定位的,则该值计算为“auto”。

在初始情况下,由于容器元素的高度未显式设置,子元素的 height: 100% 变为“auto”。这意味着它只会占用其内容所需的空间,从而导致不可见的高度。

向容器元素添加高度值(甚至小至 1px)显式定义其高度,从而允许子元素element's height: 100% 来计算并应用正确的高度。

因此,看似意外的行为源于这样一个事实:父元素的高度需要为其子元素显式定义正确计算他们的身高百分比。

以上是当父元素有'min-height”/'max-height”但没有显式高度时,为什么'height: 100%”在子元素上失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn