我试图了解对我来说似乎出乎意料的行为:
我在一个也使用最大高度的容器中有一个最大高度为 100% 的元素,但出乎意料的是,子元素溢出了父元素:
测试用例:http: //jsfiddle.net/bq4Wu/16/
.container { background: blue; padding: 10px; max-height: 200px; max-width: 200px; } img { display: block; max-height: 100%; max-width: 100%; }
但是,如果给父级指定了明确的高度,则这是固定的:
测试用例:http: //jsfiddle.net/bq4Wu/17/
.container { height: 200px; }
有谁知道为什么孩子在第一个例子中不尊重其父母的最大高度?为什么需要明确的高度?
当您为孩子指定百分比时max-height,它是父母实际身高的百分比,而不是父母的max- height,奇怪的是。这同样适用于max-width。
max-height
max- height
max-width
因此,当您未在父项上指定显式高度时,则没有max-height要计算子项的基本高度,因此max- height计算为none,允许子项尽可能高。现在作用于子级的唯一其他约束是max- width其父级的,并且由于图像本身的高度大于宽度,它会向下溢出容器的高度,以便在保持其纵横比的同时仍然尽可能大。
none
max- width
当您 为父 级指定显式高度时,子级知道它最多必须是该显式高度的 100%。这允许它被限制在父级的高度(同时仍保持其纵横比)。