国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CSS魔法堂:hasLayout原來是這樣的!

URLOS / 1667人閱讀

摘要:到底是何方神圣可以簡單看作是中的。和產生新的特性一樣,無法通過屬性直接設置,而是通過某些屬性間接開啟這一特性。不同的是某些屬性是以不可逆方式間接開啟為。因此所引發的問題,很大程度可以理解為在不應該的或沒有預料到的地方產生新的導致的。

前言

過去一直聽說舊版本IE下很多詭異bug均由一個神秘角色引起的,那就是hasLayout。趁著最近突然發神經打算好好學習CSS,順便解答多年來的疑惑。

hasLayout到底是何方神圣?

hasLayout可以簡單看作是IE5.5/6/7中的BFC(Block Formatting Context)。也就是一個元素要么自己對自身內容進行組織和尺寸計算(即可通過width/height來設置自身的寬高),要么由其containing block來組織和尺寸計算。而IFC(即沒有擁有布局)而言,則是元素無法對自身內容進行組織和尺寸計算,而是由自身內容來決定其尺寸(即僅能通過line-height設置內容行距,通過行距來支撐元素的高度;也無法通過width設置元素寬度,僅能由內容來決定而已)
當hasLayout為true時(就是所謂的"擁有布局"),相當于元素產生新BFC,元素自己對自身內容進行組織和尺寸計算;
當hasLayout為false時(就是所謂的"不擁有布局"),相當于元素不產生新BFC,元素由其所屬的containing block進行組織和尺寸計算。
和產生新BFC的特性一樣,hasLayout無法通過CSS屬性直接設置,而是通過某些CSS屬性間接開啟這一特性。不同的是某些CSS屬性是以不可逆方式間接開啟hasLayout為true。并且默認產生新BFC的只有html元素,而默認hasLayout為true的元素就不只有html元素了。
另外我們可以通過object.currentStyle.hasLayout屬性來判斷元素是否開啟了hasLayout特性。

到這里我們應該了解到若要理解hasLayout則必須理解BFC,因此這里可參考CSS魔法堂:重新認識Box Model、IFC、BFC和Collapsing margins

默認hasLayout==true的元素
, 
, , 
, ,
,