參考文檔 https://www.cnblogs.com/jizhijunboke/p/4990091.html
一、兩欄布局(左定寬,右自動)
1. float + margin
即固定寬度元素設置float屬性為left,自適應元素設置margin屬性,margin-left應>=定寬元素寬度。
舉例:
HTML代碼:
- <div class="wrap">
- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
- </div>
-
CSS代碼
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- margin: 10px;
- }
- .wrap_left{
- float: left;
- width: 200px;
- }
- .wrap_right{
- margin-left: 220px;
- }
2.position + margin
即在父標簽設置position屬性為relative;子標簽中定寬元素設置position屬性為absolute;自適應元素設置margin屬性,margin-left>=定寬元素寬度。
舉例:
HTML代碼- <div class="wrap">
- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
- </div>
CSS代碼
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- margin: 10px;
- position: relative;
- }
- .wrap_left{
- position: absolute;
- width: 200px;
- }
- .wrap_right{
- margin-left: 220px;
- }
3.float + 負margin即給自適應寬度元素定義一個父標簽,並設置float屬性為left;width為100%;自適應寬度元素設置margin,margin-left應>=定寬元素寬度;固定寬度元素設置margin-left屬性為負值:-100%;
除此之外應注意HTML結構中應先寫自適應元素,再寫固定寬度元素。HTML代碼
- <div class="wrap">
- <div class="wrap_right">
- 我是右欄
- </div>
- </div>
- <div class="wrap_left">
- 我是左欄
- </div>
CSS代碼
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- float: left;
- width: 100%;
- }
- .wrap .wrap_right{
- margin-left: 220px;
- }
- .wrap_left{
- float: left;
- width: 200px;
- margin-left: -100%;
- }
4.用table布局實現來自評論里@qazxsw的方法:
- <table width="100%" cellspacing="0" cellpadding="0" border="1" height="300">
- <tr>
- <td width="200" bgcolor="red"></td>
- <td bgcolor="green"></td>
- </tr>
- </table>
運行代碼復制代碼保存代碼提示:您可以先修改部分代碼再運行!power by W3Cfuns.com
不過這個方法,一定要設置高度才可以~5.觸發BFC實現 —— 來自評論里柯南同學@15913127081的方法
關於BFC是什么、怎么觸發BFC以及BFC可以用來做什么,大家可以看看這篇,前端精選文摘:BFC 神奇背后的原理(我會告訴你我也是才看的么~哈哈~)
實現方法,即為定寬元素設置float:left;自適應寬度元素設置可以觸發BFC的屬性。(可以觸發BFC的屬性?繼續看上面那個鏈接!!)
示例:
HTML代碼:- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
CSS代碼:
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- float: left;
- width: 200px;
- }
- .wrap_right{
- overflow: hidden;
- }
6.flex伸縮盒方法
即父標簽設置display:flex屬性,自適應元素設置flex-grow:1;
HTML代碼- <div class="wrap">
- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
- </div>
復制代碼
CSS代碼- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- display: flex;
- display: -webkit-flex;
- }
- .wrap_left{
- width: 200px;
- }
- .wrap_right{
- flex-grow:1;
- -webkit-flex-grow:1;
- }
二、三欄布局
掌握了上面的方法,我們會發現制作一個三欄布局也是非常容易的。
下面我們在上面栗子的基礎上,看看實現一個兩側定寬,中間自適應的三欄布局如何實現
1. float + margin(兩側定寬,中間自適應)
HTML代碼:- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
- <div class="wrap_content">
- 我是中間欄
- </div>
復制代碼
CSS代碼:- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- width: 200px;
- float: left;
- }
- .wrap_content{
- margin-left: 220px;
- margin-right: 220px;
- }
- .wrap_right{
- width: 200px;
- float: right;
- }
2. position + margin(兩側定寬,中間自適應)HTML代碼:
- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
- <div class="wrap_content">
- 我是中間欄
- </div>
CSS代碼
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- width: 200px;
- position: absolute;
- left: 0;
- }
- .wrap_content{
- margin-left: 220px;
- margin-right: 220px;
- }
- .wrap_right{
- width: 200px;
- position: absolute;
- right: 0;
- }
3.float + 負margin(兩側定寬,中間自適應)
HTML代碼
- <div class="wrap">
- <div class="wrap_content">
- 我是中間欄
- </div>
- </div>
- <div class="wrap_left">
- 我是左欄
- </div>
- <div class="wrap_right">
- 我是右欄
- </div>
CSS代碼
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- float: left;;
- width: 100%;
- }
- .wrap_left{
- width: 200px;
- float: left;
- margin-left: -100%;
- }
- .wrap_content{
- margin-left: 220px;
- margin-right: 220px;
- }
- .wrap_right{
- width: 200px;
- float: left;
- margin-left: -200px;
- }