1.盒模型基本概念:content padding border margincss
2.標準盒模型和IE盒模型瀏覽器
標準模型中,盒模型的寬高只是內容(content)的寬高dom
IE模型中盒模型的寬高是內容(content)+填充(padding)+邊框(border)的總寬高ide
3.css如何設置兩種盒模型佈局
/* 標準模型 */ box-sizing:content-box; /*IE模型*/ box-sizing:border-box;
4.js獲取元素的寬高flex
元素寬高設置方式:內聯樣式,元素節點樣式,外聯樣式spa
5.邊距重疊code
父子元素間:子元素的margin-top會使父元素高度只有子元素高度那麼高orm
兄弟元素間:兄元素的下邊距和弟元素的上邊距重疊,取二者中的較大值較大值blog
空元素:空元素的上下邊距重疊,中二者中的較大值
6.BFC
概念:BFC全英文拼寫爲 Block Formatting Context 直譯爲「塊級格式化上下文」
原理:
建立BFC的css方法:
BFC用途:
自適應兩欄佈局
<style > body{ position: relative; height: 400px; } .aside{ height: 200px; width: 200px; background-color: pink; float: left; } .main{ background-color: grey; height: 300px; } </style> <body> <div class="aside"></div> <div class="main"></div> </body>
根據BFC原理的第三條:每一個元素的margin box的左邊,與包含塊border box的左邊相接觸(對於從左到右的格式化,不然相反)。即便存在浮動也是如此。所以,即便存在浮動的aside,可是main仍是與包含塊的左邊相接觸;
按照BFC原理的第四條:BFC的區域不會與float box重疊。所以,能夠經過使main觸發BFC,來實現自適應兩列布局
.main{ overflow: hidden; }
當main觸發BFC後,其不會與浮動的aside重疊。所以會根據包含塊的寬度和aside的寬度,自動變窄,效果以下:
清除內部浮動
當子元素均浮動時,其沒法撐開父元素,此時能夠讓父元素生成BFC,以下:
<style> .par { border: 5px solid #fcc; width: 300px; } .child { border: 5px solid #f66; width:100px; height: 100px; float: left; } </style> <body> <div class="par"> <div class="child"></div> <div class="child"></div> </div> </body>
根據BFC原理的第六條:計算BFC的高度時,浮動元素也參與計算。所以爲了達到清除內部浮動,能夠讓.par觸發BFC,那麼計算par的高度時,浮動元素也參與計算,par就被撐開了。
.par{ overflow: hidden; }
防止margin重疊
<style> p { color: #f55; background: #fcc; width: 200px; line-height: 100px; text-align:center; margin: 100px; } </style> <body> <p>Haha</p> <p>Hehe</p> </body>
能夠發現,兩個p元素之間的垂直margin出現了重疊。根據BFC的第二條規則:Box垂直方向的距離由margin決定,屬於同一BFC的兩個Box會發生margin重疊。所以,能夠在其中一個p上包裹容器,而後觸發其BFC,這樣兩個p就不在同一個BFC,就不會發生重疊。
<style> .wrap { overflow: hidden; } p { color: #f55; background: #fcc; width: 200px; line-height: 100px; text-align:center; margin: 100px; } </style> <body> <p>Haha</p> <div class="wrap"> <p>Hehe</p> </div> </body>