hasLayout,觸發舊IE版本下的詭異bug

2021-07-24 11:44:38 字數 761 閱讀 4291

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特性。

參考:好像隨著瀏覽器的更迭這種事件遇到的問題越來越少,所以我也就只了解一下大概意思了.

css屬性觸發和清除haslayout

position absolute float left right display inline block width except auto height except auto zoom except normal overflow hidden scroll auto overflow x...

IE對CSS的渲染引擎hasLayout

haslayout 是windows internet explorer渲染引擎的乙個內部組成部分。在internetexplorer中,乙個元素要麼自己對自身的內容進行計算大小和組織,要麼依賴於父元素來計算尺寸和組織內容。為了調節這兩個不同的概念,渲染引擎採用了 haslayout 的屬性,屬性值...

IE於FF事件分派和觸發

ff下事件分派和觸發 繫結 window.addeventlistener mousewheel function event false var event document.createevent mouseevent event.initmouseevent mousewheel true,n...