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 關注
- 894 瀏覽
相關問題推薦
添加回答
舉報