前端面試知識點--CSS盒模型

1. 基本概念

完整定義DOCTYPE會觸發標準模式,如果DOCTYPE缺失則在ie6/ie7/ie8下將會觸發怪異模式。

(W3C)標準模型
一個塊的寬度 = width(content寬度)+padding(內邊距)+border(邊框)+margin(外邊距);
標準模型

(怪異)IE模型
一個塊的寬度 = width(content寬度+內邊距+邊框)+margin(外邊距) (即怪異模式下,width包含了border以及padding);
IE模型

2. 標準模型和IE模型的區別

標準盒子模型中,盒子的width是指content寬度,但IE盒子模型中,width包含了content、border和padding的寬度。

即主要區別在於width和height的計算方式的不同

標準盒子模型:盒子的總寬度 = width + padding + border + margin
width = content的寬度

IE 盒子模型 : 盒子的總寬度 = width + margin
width = content的寬度 + padding內邊距(左右) + border邊框寬度(左右)
(高度以此類推)

3. CSS如何設置這兩種模型

(box-sizing爲CSS3屬性)

  • box-sizing:content-box; 標準模型(瀏覽器默認)
  • box-sizing:border-box; IE模型

4. JS如何設置獲取盒模型對應的寬和高

  • dom.style.width/height(只能獲取內聯樣式的寬高)
  • dom.currentStyle.width/height(渲染顯示的寬高,只支持IE瀏覽器)
  • window.getComputedStyle(dom).width/height(兼容主流瀏覽器,通用性好)
  • dom.getBoundingClientRect().width/height/left/top(計算元素的絕對位置,視窗的左上交爲頂點)

5. BFC(邊距重疊解決方案)

BFC(Block formatting context)直譯爲"塊級格式化上下文"。它是一個獨立的渲染區域,只有Block-level box參與, 它規定了內部的Block-level Box如何佈局,並且與這個區域外部毫不相干。

原理規則:

  • 不會讓垂直方向的邊距發生重疊;
  • BFC的區域不會與浮動元素髮生重疊;
  • BFC在頁面上是獨立容器,其裏面的元素與外面元素互不影響;
  • 計算BFC高度時,浮動元素也會參與計算;

如何創建BFC:

  • float的值不是none。
  • position的值不是static或者relative。
  • display的值是inline-block、table、table-cell、table-caption、flex、inline-flex
  • overflow的值不是visible

使用場景:
解決高度塌陷問題------鏈接

還有一種IFC爲"內聯格式化上下文",IFC的line box(線框)高度由其包含行內元素中最高的實際高度計算而來的。

(本文純屬個人學習筆記,如有不足請留言!)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章