CSS盒模型

CSS盒模型是前端的基石,這個問題由淺入深,由易到難,可以依次問出下面幾個問題

1.基本概念:標(biāo)準(zhǔn)模型 + IE模型
2.標(biāo)準(zhǔn)模型 和 IE模型的區(qū)別
3.CSS如何設(shè)置這兩種模型
4.JS如何設(shè)置和獲取盒模型對應(yīng)的寬和高
5.實例題(根據(jù)盒模型解釋邊距重疊)
6.BFC(邊距重疊解決方案)

1、基本概念

所有HTML元素可以看作盒子,在CSS中,"box model"這一術(shù)語是用來設(shè)計和布局時使用。
CSS盒模型本質(zhì)上是一個盒子,封裝周圍的HTML元素,它包括:邊距,邊框,填充,和實際內(nèi)容。
盒模型允許我們在其它元素和周圍元素邊框之間的空間放置元素。

2、標(biāo)準(zhǔn)模型與IE模型的區(qū)別

標(biāo)準(zhǔn)模型與 IE 模型的區(qū)別在于寬高的計算方式不同。標(biāo)準(zhǔn)模型計算元素的寬高只算 content 的寬高,IE模型是 content + padding + border 的總尺寸。假如 content 寬高是 100px,padding 為 10px,border為 10px,margin為10px,那么在標(biāo)準(zhǔn)模型下,這個元素的寬為 100px,高為 100px。IE模型下,寬為 100px + 210px(左右padding) + 210px(左右border) = 140px;高為 100px + 210px(上下padding) + 210px(上下border) = 140px;

3、如何設(shè)置這兩種模型

//設(shè)置標(biāo)準(zhǔn)模型
box-sizing: content-box;
//設(shè)置IE模型
box-sizing: border-box;

4、JS如何設(shè)置盒模型的寬和高

假設(shè)已經(jīng)獲取的節(jié)點為 dom
//只能獲取內(nèi)聯(lián)樣式設(shè)置的寬高
dom.style.width/height

//獲取渲染后即時運行的寬高,值是準(zhǔn)確的。但只支持 IE
dom.currentStyle.width/height

//獲取渲染后即時運行的寬高,值是準(zhǔn)確的。兼容性更好
window.getComputedStyle(dom).width/height;

//獲取渲染后即時運行的寬高,值是準(zhǔn)確的。兼容性也很好,一般用來獲取元素的絕對位置,getBoundingClientRect()會得到4個值:left, top, width, height
dom.getBoundingClientRect().width/height;

5、BFC

什么是 BFC?Block Formatting Context(塊級格式化上下文)。
在解釋什么是BFC之前,我們需要先知道Box、Formatting Context的概念。

如何創(chuàng)建BFC

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

BFC的作用
利用BFC避免margin重疊
自適應(yīng)兩欄布局
清除浮動

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容