前端面試—CSS盒模型

題目:談談你對CSS盒模型的認識

首先要說出border margin padding content,還要說出標準模型+IE模型。

緊接著,面試官可能要問標準模型和IE模型的區別:寬度和高度的計算不同。

下面給出兩張圖片來看一下兩種模型的高度計算方式

前端面試—CSS盒模型

前端面試—CSS盒模型

回答出來後,面試官可能繼續追問CSS是如何設置這兩種模型的:

box-sizing: content-box; // 標準模型

box-sizing: border-box; // IE模型

再繼續追問的話就是,JS如何獲取對應盒模型的寬和高?

1.dom.style.width/height(僅限於DOM節點的行間樣式)


2.dom.currentStyle.width/height(拿到瀏覽器渲染完成之後即時運行的結果(相對準確),瀏 覽器不管是設置的行間樣式還是樣式表或者style節點,缺點只有IE支持)

3.window.getComputedStyle(dom).width/height(2的兼容方式)


4.dom.getBoundingClientRect().width/height(可拿到瀏覽器即時運行完之後的準確結果,常用於計算元素相對於視窗左上角的絕對位置,可獲取4個結果top left width height)

最後,還有一個題目,可能給一個實例題(根據盒模型解釋邊距重疊)

前端面試—CSS盒模型

題目中子元素高度100px(margin-top: 10px),距離父元素上邊距10px,請給出父元素的高度?

其實這個題你說100px也對,說110px也對,要看父元素盒模型的設置方式。

給父元素設置overflow: hidden;則高度為110px,否則為100px。

那這又是為什麼呢?原因在於overflow: hidden;給父元素創建了BFC也就是塊級格式化上下文(其實還有一個IFC內聯元素的格式化上下文,此處不做介紹)

最後的最後還會有考察的知識點嗎?有的,那就是終極拔高的BFC(邊距重疊解決方案)

BFC基本概念:塊級格式化上下文

BFC原理:

1.BFC區域內垂直方向元素的邊距發生重疊

2.BFC的區域不會與浮動元素的box重疊

3.BFC在頁面上是一個獨立的容器,外面的元素不會影響它裡面的元素,反之亦然。

4.計算BFC高度的時候,浮動元素也參與計算

如何創建BFC:

1.float值不為none

2.position的值不是static和relative

3.display屬性值和table相關(inline-box table table-cell table-caption)

4.overflow的值不為visible

----------------------------------------------------------------------------------------------

看到這就結束了,各位小夥伴不留下一些意見嗎?哈哈哈

前端面試—CSS盒模型


分享到:


相關文章: