實際的頁面開發中常常會遇到左邊定寬,右邊自適應的需求,特別是一些管理系統,好比左邊顯示信息或操做列表,右邊顯示詳情,以下所示:、css
針對這種佈局,首先抽象出頁面結構以下:html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 * { 8 padding: 0; 9 margin: 0; 10 color: #fff; 11 font-size: 30px; 12 font-weight: bold; 13 text-align: center; 14 box-sizing: border-box; 15 } 16 aside { 17 width: 200px; 18 height: 200px; 19 padding-top: 75px; 20 background: #5A6A94; 21 } 22 section { 23 height: 200px; 24 padding-top: 75px; 25 background: #BE4F4F; 26 } 27 </style> 28 </head> 29 <body> 30 <!-- 左邊定寬 --> 31 <aside class="left">Left</aside> 32 <!-- 右邊自適應 --> 33 <section class="right">Right</section> 34 </body> 35 </html>
瀏覽器中效果:瀏覽器
須要實現的效果以下:ide
那麼針對這種常見的佈局,方式是很是多的,下面給出幾種比較簡單和常見的方法。函數
方法一:左邊設置左浮動,右邊寬度設置100%佈局
【分析】這樣的方式簡單得讓我懷疑,可是效果上確實是實現了。flex
方法二: 父容器設置 display:flex;Right部分設置 flex:1 spa
【分析】display:flex; 設置爲彈性盒子,其子元素能夠經過設置 flex 的數值來控制所佔空間的比例。3d
方法三:設置浮動 + 在 css 中使用 calc() 函數code
【分析】
1. 浮動。(注意:爲了避免影響其餘元素,別忘了在父級上清除浮動)
2. calc() = calc(四則運算) 用於在 css 中動態計算長度值,須要注意的是,運算符先後都須要保留一個空格,例如:width: calc(100% - 10px)
;
3. vw: viewport width。1vw = viewport 寬度的 1%, 100vw = viewport width,
一樣的還有 vh: viewport height。1vw = viewport 高度的 1%, 100vh = viewport height。
瀏覽器支持狀況: 主流瀏覽器、IE10+
vw 和 vh 會隨着viewport 的變化而變化,所以十分適合於自適應場景來使用。
方法四:使用負margin
首先修改頁面結構,爲自適應部分添加容器 .container, 同時改變左右部分的位置,以下:
設置樣式:
【分析】
1. 首先設置左邊部分和右邊部分左浮動,併爲自適應部分(Right)設置寬度100%。此時的效果是這樣的:
2. 設置左邊部分左外邊距爲負100%,此時效果以下:
可是右邊部分的寬度仍然爲100%,部份內容被 Left 所覆蓋。
3. 爲 Right 部分添加左邊距(即 Left 部分的寬度)
此時能夠看到,Right 部分的內容居中顯示了。