1. 程式人生 > >css--盒模型

css--盒模型

區別 支持 如何 解釋 cap 恢復 獲取 浮動元素 adding

---恢復內容開始---

盒模型:

1、基本內容:

2、基本概念:標準模型+IE模型

3、標準模型和IE模型的區別:

4、css如何設置這兩種模型:

5、js如何設置獲取盒模型對應的寬和高

6、根據盒模型解釋邊距重疊

7、BFC(邊距重疊解決方案)

基本內容:

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發生重疊,則左邊和右邊不會發生了重疊

技術分享圖片

---恢復內容結束---

css--盒模型