CSS-盒模型知識整理與了解:
CSS盒模型知識整理與了解(1)--- 基本概念
CSS盒模型知識整理與了解(2)--- 邊距重疊問題詳解
CSS-盒模型知識整理與了解(3)--- BFC詳解
CSS盒模型知識整理與了解 --- 盒模型的基本概念
本文涉及知識:
- 盒模型的概念
- 标準模型和IE盒模型的差別
- JS擷取盒模型寬高的方法
- 盒模型的邊距重疊問題
- BFC的了解(概念、原理、如何建立、使用場景)
CSS盒模型的概念
CSS盒模型(box model),它是包含了内容(content)、内邊距(padding)、邊框(border)、外邊距(margin)屬性的一個盒子模型。
而盒模型又分為兩類标準:标準盒子模型和IE盒子模型(怪異盒子模型)
标準盒模型

CSS3中加入了新的屬性box-sizing,可以通過設定box-sizing屬性來改變盒模型标準
在浏覽器預設的盒模型是content-box
box-sizing: content-box(預設);
IE盒模型
IE盒子模型,也稱為怪異盒子模型
可以通過box-sizing來設定此标準
box-sizing: border-box;
标準盒子模型和IE盒子模型的差別
從上面的盒子模型的圖檔展示,可以清晰的看到
在标準盒子模型中,盒子的width是指content的寬高,
而IE盒子模型中就比較怪異了,它包含了content、border和padding的距離。
即它們的主要差別在于width和height的計算方式的不同。
标準盒子模型:盒子的總寬度 = margin+border+padding+width
width = content的寬度
IE 盒子模型 : 盒子的總寬度 = margin+width
width = content的寬度+border邊框寬度(左右)+padding内邊距(左右)
高度計算同理
差別例子展示
我們設定了兩個盒子,設定了它們的width、height都為200px
<style>
html *{
margin: 0;
padding: 0;
}
div{
width: 200px;
height: 200px;
border: 10px solid #000;
padding: 10px;
}
#ie-box{
box-sizing: border-box;
}
</style>
<div id="w3c-box">
content
</div>
<div id="ie-box">
content
</div>
标準盒子模型:打開控制台,可以看見标準盒模型的width為content内容的寬度200px(高度同理)
IE盒子模型:打開控制台,可以看到我們設定了width是200px,此處設定的已經不再是content内容區了,
而設定的width = content的寬度+ padding左右寬度+border左右寬度
JS擷取寬高的方法
方法1:dom.style.width/height
此方法隻可以取到行内樣式,而取不到内部樣式表或者外部樣式表設定的width
例如一下例子,可以取到w3cbox設定的width
<div id="w3c-box" style="width:300px"> content </div> <script> var w3c = document.getElementById('w3c-box'); var ie = document.getElementById('ie-box'); // 方法1: dom.style.width/height console.log(w3c.style.width); </script>
而如果我們用内部樣式表或者外部樣式表![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解 <style> #w3c-box{ width: 300px }; </style> <div id="w3c-box"> content </div> <script> var w3c = document.getElementById('w3c-box'); var ie = document.getElementById('ie-box'); // 方法1: dom.style.width/height console.log('width:'+ w3c.style.width); </script>
![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解 我們無法擷取到width的值。
那麼我們有什麼辦法可以擷取到樣式表中的width和height呢?
方法2: dom.currentStyle.width/height
但是此方法僅僅相容IE,其他浏覽器都不可以使用該屬性,微軟旗下的Microsoft Edge浏覽器同樣不相容
例子展示
在IE浏覽器中<style> #w3c-box{ width:300px; } <style> <div id="w3c-box"> content </div> <script> var w3c = document.getElementById('w3c-box'); var ie = document.getElementById('ie-box'); // 方法2: dom.currentStyle['width/height'] console.log(w3c.currentStyle['width']); </script>
而在其他浏覽器,currentStyle這個對象為undefined![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解
方法3:window.getComputedStyle(dom).width/height
getComputedStyle()用于擷取CSS計算後的屬性值
擷取
此方法相容IE9+以及其他浏覽器,擁有者良好的及相容性,普遍通用的方法。console.log('w3c_width='+window.getComindoputedStyle(w3c).width);
方法4:dom.getBoundingClientRect().width/height
getBoundingClientRect()
擷取元素相對于視窗的位置的集合
傳回值有 top、left、width、height
相容性更好,可以相容IE5、firefox2以上的浏覽器
但是在擷取标準盒模型的寬高的時候會加上border和padding的寬度,例如怪異盒模型
CSS-盒模型知識整理與了解
本文涉及知識:
- 盒模型的概念
- 标準模型和IE盒模型的差別
- JS擷取盒模型寬高的方法
- 盒模型的邊距重疊問題
- BFC的了解(概念、原理、如何建立、使用場景)
CSS盒模型的概念
CSS盒模型(box model),它是包含了内容(content)、内邊距(padding)、邊框(border)、外邊距(margin)屬性的一個盒子模型。
而盒模型又分為兩類标準:标準盒子模型和IE盒子模型(怪異盒子模型)
标準盒模型

CSS3中加入了新的屬性box-sizing,可以通過設定box-sizing屬性來改變盒模型标準
在浏覽器預設的盒模型是content-box
box-sizing: content-box(預設);
IE盒模型
IE盒子模型,也稱為怪異盒子模型
可以通過box-sizing來設定此标準
box-sizing: border-box;
标準盒子模型和IE盒子模型的差別
從上面的盒子模型的圖檔展示,可以清晰的看到
在标準盒子模型中,盒子的width是指content的寬高,
而IE盒子模型中就比較怪異了,它包含了content、border和padding的距離。
即它們的主要差別在于width和height的計算方式的不同。
标準盒子模型:盒子的總寬度 = margin+border+padding+width
width = content的寬度
IE 盒子模型 : 盒子的總寬度 = margin+width
width = content的寬度+border邊框寬度(左右)+padding内邊距(左右)
高度計算同理
差別例子展示
我們設定了兩個盒子,設定了它們的width、height都為200px
<style>
html *{
margin: 0;
padding: 0;
}
div{
width: 200px;
height: 200px;
border: 10px solid #000;
padding: 10px;
}
#ie-box{
box-sizing: border-box;
}
</style>
<div id="w3c-box">
content
</div>
<div id="ie-box">
content
</div>
标準盒子模型:打開控制台,可以看見标準盒模型的width為content内容的寬度200px(高度同理)
IE盒子模型:打開控制台,可以看到我們設定了width是200px,此處設定的已經不再是content内容區了,
而設定的width = content的寬度+ padding左右寬度+border左右寬度
JS擷取寬高的方法
方法1:dom.style.width/height
此方法隻可以取到行内樣式,而取不到内部樣式表或者外部樣式表設定的width
例如一下例子,可以取到w3cbox設定的width
<div id="w3c-box" style="width:300px"> content </div> <script> var w3c = document.getElementById('w3c-box'); var ie = document.getElementById('ie-box'); // 方法1: dom.style.width/height console.log(w3c.style.width); </script>
而如果我們用内部樣式表或者外部樣式表![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解 <style> #w3c-box{ width: 300px }; </style> <div id="w3c-box"> content </div> <script> var w3c = document.getElementById('w3c-box'); var ie = document.getElementById('ie-box'); // 方法1: dom.style.width/height console.log('width:'+ w3c.style.width); </script>
![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解 我們無法擷取到width的值。
那麼我們有什麼辦法可以擷取到樣式表中的width和height呢?
方法2: dom.currentStyle.width/height
但是此方法僅僅相容IE,其他浏覽器都不可以使用該屬性,微軟旗下的Microsoft Edge浏覽器同樣不相容
例子展示
在IE浏覽器中<style> #w3c-box{ width:300px; } <style> <div id="w3c-box"> content </div> <script> var w3c = document.getElementById('w3c-box'); var ie = document.getElementById('ie-box'); // 方法2: dom.currentStyle['width/height'] console.log(w3c.currentStyle['width']); </script>
而在其他浏覽器,currentStyle這個對象為undefined![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解
方法3:window.getComputedStyle(dom).width/height
getComputedStyle()用于擷取CSS計算後的屬性值
擷取
此方法相容IE9+以及其他浏覽器,擁有者良好的及相容性,普遍通用的方法。console.log('w3c_width='+window.getComindoputedStyle(w3c).width);
方法4:dom.getBoundingClientRect().width/height
getBoundingClientRect()
擷取元素相對于視窗的位置的集合
傳回值有 top、left、right、bottom、width、height
相容性好,可以相容IE5+、firefox2以上的浏覽器
注意:此處擷取的width類似于怪異盒子會包括border和padding的距離。
但是在擷取标準盒模型的寬高的時候會加上border和padding的寬度,例如怪異盒模型
![]()
CSS盒模型知識整理與了解(1)--- 基本概念 CSS盒模型知識整理與了解 --- 盒模型的基本概念CSS-盒模型知識整理與了解 擷取到了340px
而設定了IE的标準和模型則正确得擷取了width
邊界重疊詳細解析:CSS盒模型知識整理與了解(2)--- 邊距重疊問題詳解
BFC詳細解析:CSS-盒模型知識整理與了解(3)--- BFC詳解
本文為個人學習筆記,如有錯誤歡迎留言指正,謝謝!