常用三列布局方法
三列布局此处指的是左右两侧固定宽度,中间自适应的布局方式。
##一、float
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <!DOCTYPE html> <html lang="en"> <head> <style> .left { float: left; height: 200px; width: 100px; background-color: red; } .right { width: 200px; height: 200px; background-color: blue; float: right; } .main { margin-left: 120px; margin-right: 220px; height: 220px; background-color: green; } </style> </head> <body> <div class="container"> <div class="left"></div> <div class="right"></div> <div class="main"></div> </div> </body> </html>
|
需要注意的是,main必须加margin,否则会平铺。
二、用BFC特性
BFC 区域,不会与浮动元素重叠。因此我们可以利用这一点来实现 3 列布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <!DOCTYPE html> <html lang="en"> <head> <style> .left { float: left; height: 200px; width: 100px; background-color: red; } .right { width: 200px; height: 200px; float: right; background-color: blue; } .main { height: 220px; overflow: hidden; background-color: green; } </style> </head> <body> <div class="container"> <div class="left"></div> <div class="right"></div> <div class="main"></div> </div> </body> </html>
|
注意overflow: hidden;加上这个就是BFC了,不会与两侧的浮动元素重叠。
三、flex
flex可以有三个属性,分别是
flex-grow—放大多少倍
flex-shrink—缩小多少倍
flex-basis—设置大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <!DOCTYPE html> <html lang="en"> <head> <style> .container { display: flex; } .main { flex: 1; height: 330px; background-color: red; } .left { order: -1; flex-basis: 200px; height: 300px; background-color: blue; } .right { flex-basis: 200px; height: 300px; background-color: green; } </style> </head> <body> <div class="container"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div> </body> </html>
|
flex-basis左右两侧通过该属性固定宽度即可,注意main的flex:1必须要加,1可以换成别的正数,但是不能没有,因为flex默认值为0,这样就会不显示。
四、table
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <!DOCTYPE html> <html lang="en"> <head> <style> .container { display: table; width: 100%; } .left, .main, .right { display: table-cell; } .left { width: 200px; height: 300px; background-color: red; } .main { background-color: blue; } .right { width: 100px; height: 300px; background-color: green; } </style> </head> <body> <div class="container"> <div class="left"></div> <div class="main"></div> <div class="right"></div> </div> </body> </html>
|
缺点是没法设置margin。
五、绝对定位
简单实用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <!DOCTYPE html> <html lang="en"> <head> <style> .container { position: relative; } .main { height: 400px; margin: 0 120px; background-color: green; } .left { position: absolute; width: 100px; height: 300px; left: 0; top: 0; background-color: red; } .right { position: absolute; width: 100px; height: 300px; background-color: blue; right: 0; top: 0; } </style> </head> <body> <div class="container"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div> </body> </html>
|