---恢復內容開始---css
盒模型:dom
一、基本內容:佈局
二、基本概念:標準模型+IE模型blog
三、標準模型和IE模型的區別:get
四、css如何設置這兩種模型:it
五、js如何設置獲取盒模型對應的寬和高io
六、根據盒模型解釋邊距重疊table
七、BFC(邊距重疊解決方案)class
基本內容:原理
content+padding+border+margin
基本概念:
標準模型:css設置的width是指content的width,好比width:100px,指的是內容100px ,實際的width = content+padding+margin+border
IE模型:ss設置的width是指content+border+padding的width,好比width:100px,指的是content+padding+border=100px
標準模型和IE模型的區別:
這二者計算的width 和height不同
標準模型 width = content
IE模型 width = content+padding+border
css如何設置這兩種模型
box-sizing:content-box | border-box 默認的是content-box(標準模型)
js如何設置獲取盒模型對應的寬和高
(1)dom.style.width--只能獲取到內聯樣式的width
(2)dom.currentStyle.width --拿到的是渲染之後的dom的width(只有IE支持)
(3)window.getComputedStyle(dom).width
(4)dom.getBoundingClientRect().width --計算元素的絕對位置的時候經常使用
根據盒模型解釋邊距重疊
好比div1和div2,div1的margin-bottom = 30px, div2的margin-top = 5px,div1和div2之間的距離是30px,這就是邊距重疊 , 會取二者之間的最大值做爲邊距
BFC(邊距重疊解決方案)
(1)、BFC的基本概念:塊級格式化上下文
(2)、BFC的原理
*:外面元素和裏面的元素互不干擾
*:float元素不會與BFC元素相互重疊
*:BFC垂直方向上的元素邊距重疊
*:BFC若是裏面的子元素是浮動的,則計算父元素的高度的時候,會把浮動元素的高度計算進去(清除浮動原理)
(3)、如何建立BFC
(1)根元素
(2)float的值不爲none
(3)overflow的值不爲visible
(4)display的值爲inline-block,table-cell,table-caption
(5)position的值爲absolute或fixed
(4)、BFC使用場景
BFC邊距重疊解決邊距重疊的問題原理
設置div2的樣式overflow:hidden這樣div2就變成了一個BFC,由於BFC是一個獨立的區域,外面的元素和裏面的元素互不干擾,因此不會發生邊距重疊
BFC應用到兩欄佈局
<section id="main">
<style>
#main .left{
float: left;
width: 100px;
height: 100px;
background-color: pink;
}
.right{
height: 200px;
background-color: blue;
/*overflow: hidden;*/
}
</style>
<div class="left">left</div>
<div class="right">right</div>
</section>
當將.right設置overflow:hidden,將right設置爲BFC,根據原理BFC不會與float發生重疊,則左邊和右邊不會發生了重疊
---恢復內容結束---