每一個html
元素均可看做一個盒子,由外邊距margin
、邊框border
、內邊距padding
、內容content
組成,對這些屬性的設置,能夠實現元素的不一樣展現及佈局(eg.設置margin實現水平居中)。html
因爲瀏覽器對盒模型的實現不一樣,造成了:標準盒模型、IE盒模型
兩者區別:width
和height
定義不一樣git
標準盒模型
的寬高包括:contentIE盒模型
的寬高包括:content、padding、border因爲IE盒模型
更貼合人們對於物理盒子寬高的理解,因此一般採用IE盒模型
。
設置兩種模型的方法:github
方法一:瀏覽器
dom.style.width/height
// 缺點:僅能獲取js顯式設置或dom標籤上設置的行內樣式中的寬高,
// 沒法獲取內聯樣式(<style>標籤設置的樣式)、外聯樣式(<link>標籤引入的樣式)中的寬高。❗️👍
複製代碼
方法二:dom
dom.currentStyle.width/height
// 缺點:可獲取各類方式綜合層疊計算後的寬高,但僅支持IE瀏覽器。👎
複製代碼
方法三:佈局
window.getComputedStyle(dom).width/height
// 可獲取各類方式綜合層疊計算後的寬高,兼容性很好(IE9+)。👍👍
複製代碼
方法四:學習
dom.getBoundingClientRect().width/height
// `getBoundingClientRect` 可獲取元素的寬高及相對於視口原點(瀏覽器網頁部分的左上角)位置信息(top、left)。👍
複製代碼
邊距重疊:是指父子、相鄰兄弟元素的外邊距會重疊在一塊兒,大小取較大的那個邊距。spa
BFC的渲染規則:3d
我將學習、工做中的積累作成了開源項目:Blogcode
歡迎關注並一塊兒討論學習。