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

最大身高的孩子:100%溢出父母

谷梁波
2023-03-14
问题内容

我试图了解什么对我来说似乎是意外的行为:

我在容器内有一个最大高度为100%的元素,该元素也使用最大高度,但是,出乎意料的是,子代溢出了父代:

.container {  
    background: blue; 
    padding: 10px; 
    max-height: 200px; 
    max-width: 200px; 
}

img { 
    display: block;
    max-height: 100%; 
    max-width: 100%; 
}

但是,如果给定父级的显式高度,则此问题已解决:

.container {  
    height: 200px;
}

有谁知道为什么孩子在第一个例子中不尊重父母的最大身高?为什么需要一个明确的高度?


问题答案:

当您指定的百分比max-height上一个孩子,这是父母的实际高度的百分比,而不是父母的max-height,奇怪的。同样适用于max-width

因此,如果您没有在父级上指定显式的身高,那么就不会max-height从中计算出孩子的基本身高,因此max- height计算为none,可以使孩子尽可能高。现在,作用于孩子的唯一其他约束是max-width其父对象的约束,并且由于图像本身的高度大于宽度,因此为了保持其长宽比,同时仍要尽可能地大,它会向下溢出容器的高度。

当您 确实 为父母指定了明确的身高时,孩子就会知道它必须是该明确的身高的最多100%。这样就可以将其约束到父级的高度(同时仍保持其宽高比)。



 类似资料:
  • 我试图理解我的意外行为: 容器中有一个最大高度为100%的元素,该容器也使用了最大高度,但意外的是,子元素溢出了父元素: 测试用例:http://jsfiddle.net/bq4Wu/16/ 但是,如果为父级指定了明确的高度,则这是固定的: 测试用例:http://jsfiddle.net/bq4Wu/17/ 有人知道第一个例子中孩子为什么不尊重父母的最大身高吗?为什么需要明确的高度?

  • 问题内容: 我通过设置找到了一种使div容器至少占据整个页面高度的方法。但是,当我添加一个嵌套div和set时,它不会扩展到容器的高度。有办法解决吗? 问题答案: 这是一个已报告的Webkit(chrome /safari)错误,具有最小身高的父母的孩子不能继承height属性: : 显然Firefox也受到了影响(目前无法在IE中进行测试) 可能的解决方法: 添加位置:相对于#containme

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

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

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

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