一欄固定一欄自適應
實現代碼:
<!DOCTYPE html> <html> <head> <title>自適應布局-一欄固定一欄自適應</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } #left{ height: 600px; width: 200px; float: left; background-color: #fffc00; } #main{ height: 600px; width: auto; background-color: #03c03c; } </style> </head> <body> <div id="left">left 固定寬度</div> <div id="main">main 自適應寬度</div> </body> </html>
左右兩欄固定,中間自適應
- 方法一 :使用float浮動
自身浮動法的原理就是使用對左右使用分別使用float:left和float:right,float使左右兩個元素脫離文檔流,中間元素正常在正常文檔流中,使用margin指定左右外邊距對其進行一個定位。
<!DOCTYPE html> <html> <head> <title>自適應布局</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } #container{ width: 100%; margin: 0 auto; } #left{ width: 200px; height: 600px; float: left; background-color: #fffc00; } #right{ width: 100px; height: 600px; float: right; background-color: orange; } #main{ height: 600px; margin-left: 0 100px 0 200px; background-color: #03c03c; } </style> </head> <body> <div id="container"> <div id="left">left 200px</div> <div id="right">right 100px</div> <div id="main">main 自適應</div> </div> </body> </html>
- 方法二:使用絕對定位
絕對定位法原理是將左右兩邊使用absolute定位,因為絕對定位使其脫離文檔流,后面的center會自然流動到他們上面,然后使用margin屬性,留出左右元素的寬度,既可以使中間元素自適應屏幕寬度。
<!DOCTYPE html> <html> <head> <title>自適應布局</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } #left{ width: 200px; height: 600px; position: absolute; top: 0; left: 0; background-color: #fffc00; } #right{ width: 100px; height: 600px; position: absolute; top: 0; right: 0; background-color: orange; } #main{ height: 600px; position: absolute; left: 200px; right: 100px; top: 0; background-color: #03c03c; } </style> </head> <body> <div id="left">left 200px</div> <div id="right">right 100px</div> <div id="main">main 自適應</div> </body> </html>
- 方法三:使用負margin(聖杯布局)
聖杯布局的原理是margin負值法。使用聖杯布局首先需要在center元素外部包含一個div,包含div需要設置float屬性使其形成一個BFC,並設置寬度,並且這個寬度要和left塊的margin負值進行配合,具體原理參考這里。這里對聖杯布局解釋特別詳細。
<!DOCTYPE html> <html> <head> <title>自適應布局</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } #wrap{ width: 100%; float: left; } #main{ height: 600px; margin: 0 100px 0 200px; background-color: #03c03c; } #left{ width: 200px; height: 600px; float: left; margin-left: -100%; background-color: #fffc00; } #right{ width: 100px; height: 600px; float: left; margin-left: -100px; background-color: orange; } </style> </head> <body> <div id="wrap"> <div id="main">main 自適應</div> </div> <div id="left">left 200px</div> <div id="right">right 100px</div> </body> </html>
- 方法四:使用flex(css3新特性)
<!DOCTYPE html> <html> <head> <title>自適應布局</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } #container{ width: 100%; display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; } #left{ width: 200px; height: 600px; background-color: #fffc00; } #main{ width: auto; height: 600px; background-color: #03c03c; -webkit-flex: 1; -moz-flex: 1; -ms-flex: 1; -o-flex: 1; flex: 1; } #right{ width: 100px; height: 600px; background-color: orange; } </style> </head> <body> <div id="container"> <div id="left">left 200px</div> <div id="main">main 自適應</div> <div id="right">right 100px</div> </div> </body> </html>