当前位置: 首页 > 面试题库 >

最小身高的父母内部的孩子:100%不继承身高

石苏燕
2023-03-14
问题内容

我通过设置找到了一种使div容器至少占据整个页面高度的方法min-height:100%;。但是,当我添加一个嵌套div和set时height:100%;,它不会扩展到容器的高度。有办法解决吗?

html, body {

  height: 100%;

  margin: 0;

}



#containment {

  min-height: 100%;

  background: pink;

}



#containment-shadow-left {

  height: 100%;

  background: aqua;

}


<div id="containment">

  <div id="containment-shadow-left">

    Hello World!

  </div>

</div>

问题答案:

这是一个已报告的Webkit(chrome /safari)错误,具有最小身高的父母的孩子不能继承height属性:
:

显然Firefox也受到了影响(目前无法在IE中进行测试)

可能的解决方法:

  • 添加位置:相对于#containment
  • 将位置:绝对添加到#containment-shadow-left

当内部元素具有绝对定位时,该错误不会显示。

编辑于2014年4月10日

由于我目前正在从事的项目中 确实 需要带有的父容器min-height,而子元素继承了容器的高度,因此我进行了更多研究。

第一: 我现在不确定当前浏览器的行为是否确实是一个错误。CSS2.1规范说:

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

如果我将最小高度放在容器上,则不会 明确 指定其高度-因此我的元素应该具有auto高度。而这正是Webkit和其他所有浏览器的作用。

其次,我找到了解决方法:

如果将我的容器元素设置为display:tableheight:inherit则其行为与我将其设置min-height为100%时完全相同。而且-更重要的是-如果我将child元素设置为display:table-cell它,它将完美继承容器元素的高度-无论它是100%还是更高。

完整的CSS:

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

#container {
  background: green;
  display: table;
  height: inherit;
  width: 100%;
}

#content {
  background: red;
  display: table-cell;
}

标记:

<div id="container">
  <div id="content">
      <p>content</p>
  </div>
</div>


 类似资料:
  • 问题内容: 我试图了解什么对我来说似乎是意外的行为: 我在容器内有一个最大高度为100%的元素,该元素也使用最大高度,但是,出乎意料的是,子代溢出了父代: 但是,如果给定父级的显式高度,则此问题已解决: 有谁知道为什么孩子在第一个例子中不尊重父母的最大身高?为什么需要一个明确的高度? 问题答案: 当您指定的百分比上一个孩子,这是父母的实际高度的百分比,而不是父母的,奇怪的。同样适用于。 因此,如果

  • 问题内容: 我在父容器中有两个子元素,如下所示: 我尝试了以下CSS: 我怎样才能让两个孩子()都达到最高的孩子的身高? 问题答案: 一种解决方案是将后代元素的显示值从更改为:

  • 在像这样的简单示例中,子边距不会影响父级高度: JSFiddle:http://jsfiddle.net/k1eegxt3/ 默认情况下,子页边距不会分别影响父级高度和父级尺寸。通常,可以通过在父元素中添加边距可以“推”到的内容来轻松修复,例如,向父元素添加填充或边框 JSFIDLE(JSIDLE):http://jsfiddle.net/fej3qh0z/ 我想知道为什么会这样,而不仅仅是它是如

  • 问题内容: 我有一排2列。在这些列中,我有一个标题,内容和列表。它们具有不同的内容长度。 我要实现的是,该列表在同一行上彼此相邻,而不会破坏引导程序移动优化。 我首先尝试了3个不同的行,但是当列断开时,内容不再属于彼此。没有JavaScript,有没有我需要的解决方案?也许以某种方式使用flexbox? 这是我当前的代码: 问题答案: 为了能够实现这一目标,而无需使用脚本,所有项目(,,,)需要

  • 问题内容: 我正在尝试在Flexbox中填充Flex项目的垂直空间。 不能满足要求的高度,但以下两种情况除外: 的高度为100%(这很奇怪,因为弹性商品默认情况下为100%,而且在Chrome中存在错误) 绝对位置也不方便 目前,该功能不适用于Chrome或Firefox。 问题答案: 采用 与David Storey的答案类似,我的解决方法是: 或者到,你可以使用只是在你想拉长项目。

  • 问题内容: 我有一些容器,他们的孩子只是绝对的/相对的。如何设置容器的高度,以便他们的孩子进入其中? 这是代码: HTML CSS 这是一个jsfiddle。我希望“栏”文本出现在4个正方形之间,而不是在它们后面。 有简单的解决方法吗? 请注意,我不知道这些子项的高度,也无法为容器设置高度:xxx。 问题答案: 如果我了解您要正确执行的操作,那么我认为使用CSS保持孩子的绝对位置是不可能的。 绝对