成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

URLOS / 1731人閱讀

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

前言

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

hasLayout到底是何方神圣?

hasLayout可以簡單看作是IE5.5/6/7中的BFC(Block Formatting Context)。也就是一個(gè)元素要么自己對(duì)自身內(nèi)容進(jìn)行組織和尺寸計(jì)算(即可通過width/height來設(shè)置自身的寬高),要么由其containing block來組織和尺寸計(jì)算。而IFC(即沒有擁有布局)而言,則是元素?zé)o法對(duì)自身內(nèi)容進(jìn)行組織和尺寸計(jì)算,而是由自身內(nèi)容來決定其尺寸(即僅能通過line-height設(shè)置內(nèi)容行距,通過行距來支撐元素的高度;也無法通過width設(shè)置元素寬度,僅能由內(nèi)容來決定而已)
當(dāng)hasLayout為true時(shí)(就是所謂的"擁有布局"),相當(dāng)于元素產(chǎn)生新BFC,元素自己對(duì)自身內(nèi)容進(jìn)行組織和尺寸計(jì)算;
當(dāng)hasLayout為false時(shí)(就是所謂的"不擁有布局"),相當(dāng)于元素不產(chǎn)生新BFC,元素由其所屬的containing block進(jìn)行組織和尺寸計(jì)算。
和產(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)識(shí)Box Model、IFC、BFC和Collapsing margins

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