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>