成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

URLOS / 1676人閱讀

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

前言

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

hasLayout到底是何方神圣?

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

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

默認(rèn)hasLayout==true的元素
, 
, , 
, ,
,