1 回答
TA贡献1921条经验 获得超9个赞
首先,你有W3C标准,这是一套针对浏览器制造商的指南。
然后你就拥有了浏览器制造商,他们可以自由地做任何他们想做的事情(由Internet Explorer的偏差历史证明)。
特别是,对于CSS百分比高度,浏览器之间的行为存在明显差异。
你发布了一个例子。这是另一个:
Flexbox中的百分比高度:Chrome / Safari与Firefox / IE
使用flexbox时,Chrome和Safari会根据父级height
属性的值解析弹性项目的百分比高度。Firefox和IE11 / Edge优先考虑父级的弹性高度。
Webkit浏览器似乎遵循对规范的更传统的解释:
百分比
指定百分比高度。百分比是根据生成的框的包含块的高度计算的。如果未明确指定包含块的高度且此元素未绝对定位,则该值将计算为“auto”。auto
高度取决于其他属性的值。
换句话说,对于在流入子项上工作的百分比高度,父项必须具有设置的高度。
这是对规范的传统解释:术语“高度”是指height
财产的价值。我个人认为,这种语言含糊不清,可以解释,但height
财产要求已成为主要的实施方式。在处理百分比值时,我从未见过min-height
或max-height
在父母身上工作过。
然而,最近,Firefox和IE扩大了他们的解释,以接受弹性高度。
Firefox和IE的示例使用父级的弹性高度作为子级百分比高度的参考:
知道哪些浏览器符合规范有点困难,因为正如我之前提到的那样,规范语言似乎含糊不清并且易于解释。
随着定义的这一部分的最后一次更新是在1998年(CSS2),以及新的高度形式如flex高度的出现,更新似乎早就应该了。
我认为可以说,当涉及到百分比高度时,在规范定义获得更新之前,您可以预期浏览器之间的渲染差异。
替代方案
当希望子元素占据父元素的全高时,可以考虑以下两种方法。
申请
display: flex
父母。这会自动设置align-items: stretch
,告诉孩子扩展父级的完整可用高度。适用
position: relative
于父母和position: absolute; height: 100%; width: 100%
孩子。使用绝对定位,百分比高度将在父级上没有指定高度的情况下工作。
- 1 回答
- 0 关注
- 863 浏览
相关问题推荐
添加回答
举报