亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

URLOS / 1726人閱讀

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

前言

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

hasLayout到底是何方神圣?

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

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

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