css的常見佈局常常結合普通流,浮動,定位,flex實現。下面看一下幾種常見佈局:css
<div class="parent"> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div> <style> /* 法一 */ .parent{ display: flex; flex-direction: row; background: #d3d3d3; height: 200px; } .child{ flex: 1; background: pink; } /* 法二 */ .parent{ background: #d3d3d3; } .child{ float: left; width: calc(100% / 3); height: 200px; background: pink; } /* 法三 */ .parent{ background: #d3d3d3; font-size: 0; } .child{ display: inline-block; width: calc(100% / 3); height: 200px; background: pink; } /* 法四 */ .parent{ display: table; width: 100%; height: 200px; table-layout: fixed; background: #d3d3d3; } .child{ display: table-cell; outline: 1px solid green; background: pink; } </style>
此方法利用padding把每一個子元素的高度撐的超出父元素,再利用margin的負值把父元素下面的塊向上移和padding相同的距離,將加上的padding蓋掉,不理解的能夠嘗試把下面的註釋去掉,並本身調節margin的值看看效果。固然,此方法要記得把父元素設置爲超出部分不可見,要否則,試試出滾動條的效果,就很尷尬了~html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .parent{ overflow: hidden; background: #d3d3d3; } /* .above{ width: 100%; height: 300px; background: yellow; } */ .child{ float: left; width: 100px; padding-bottom: 200px; margin-bottom: -200px; } .one{ background: pink; } .two{ background: green; } .three{ background: red; } </style> </head> <body> <div class="parent"> <div class="child one">別打英文和數字別打英文和數字</div> <div class="child two">別打英文和數字別打英文和數字別打英文和數字別打英文和數字別打英文和數字別打英文和數字</div> <div class="child three">別打英文和數字別打英文和數字別打英文和數字別打英文和數字別打英文和數字</div> </div> <!-- <div class="above"></div> --> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> /* 法一:css3(左邊寬度定) */ body{ font-size: 0; } .block{ display: inline-block; vertical-align: top; font-size: 14px; } .left{ background: #d3d3d3; width: 200px; } .right{ background: pink; width: calc(100% - 200px); } /* 法二: float+margin(左邊寬度定) */ .left{ background: red; float: left; width: 200px; } .right{ background: green; margin-left: 200px; } /* 法三: float + BFC(左邊寬度不定)*/ .left{ background: red; float: left; } .right{ background: green; overflow: hidden; } </style> </head> <body> <div class="block left">左邊佈局</div> <div class="block right">右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局右邊佈局</div> </body> </html>