CSS中怎么實現(xiàn)兩列布局

CSS中怎么實現(xiàn)兩列布局,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

專業(yè)從事成都網(wǎng)站建設、網(wǎng)站建設,高端網(wǎng)站制作設計,微信平臺小程序開發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術團隊竭力真誠服務,采用H5技術+CSS3前端渲染技術,響應式網(wǎng)站,讓網(wǎng)站在手機、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項小組,與您實時在線互動,隨時提供解決方案,暢聊想法和感受。

1. absolute + margin 方式

首先想到的是利用 absolute + margin 的方式實現(xiàn)。先看看代碼:

XML/HTML Code復制內(nèi)容到剪貼板

  1. <div class="container">  

  2.     <div class="sidebar">子列</div>  

  3.     <div class="main">主列</div>  

  4. </div>  

CSS Code復制內(nèi)容到剪貼板

  1. .container {   

  2.  position: relative;   

  3. }   

  4. .sidebar {   

  5.  position: absolute;   

  6.  top: 0;   

  7.  left: 0;   

  8.  width: 200px;   

  9.  height: 300px;   

  10.  background-color: rgba(255, 0, 0, .5);   

  11. }   

  12. .main {   

  13.  height: 300px;   

  14.  margin-left: 210px;   

  15.  background-color: rgba(0, 255, 0, .5);   

  16. }  

該方式利用 position 讓 sidebar 列脫離文檔流,然后通過 main 列的 margin-left 移除被 sidebar 列覆蓋的部分。如此,我們就實現(xiàn)了定寬 + 自適應的兩列布局。

(1)列順序調(diào)整

在不修改 HTML 的情況下,只需簡單修改 CSS,我們可以讓左右兩列順序互換,來看代碼:

CSS Code復制內(nèi)容到剪貼板

  1. .sidebar {   

  2.  position: absolute;   

  3.  top: 0;   

  4.  rightright: 0;   

  5. }   

  6. .main {   

  7.  margin-right: 210px;   

  8. }   

(2)主內(nèi)容列優(yōu)先顯示

讓我們考慮的更完美一點,可不可以把 main 列放 sidebar 列 的前面,使主要內(nèi)容優(yōu)先加載渲染? Let us try!

XML/HTML Code復制內(nèi)容到剪貼板

  1. <div class="container">  

  2.     <div class="main">主列</div>  

  3.  <div class="sidebar">子列</div>  

  4. </div>  

做上面的簡單調(diào)整即可,CSS不需要任何修改!

(3)問題所在

雖然這種方式的優(yōu)點很多,但是卻存在一個致命缺點。因為 sidebar 列脫離了文檔流,當 sidebar 列比 main 列高時會覆蓋后面的布局:問題demo。
如果在 container 容器上 添加 overflow:hidden 就會使 sidebar 溢出部分被裁減。在這種布局方式下,這個問題確實沒有有效的解決辦法。

2. float + margin 方式

然后想到的就是 float + margin 來實現(xiàn)兩列布局,首先實現(xiàn)左欄定寬,主內(nèi)容自適應的兩欄布局。代碼如下:

XML/HTML Code復制內(nèi)容到剪貼板

  1. <div class="sidebar">子列</div>  

  2. <div class="main">主列</div>  

CSS Code復制內(nèi)容到剪貼板

  1. .sidebar {   

  2.  float: left;   

  3.  width: 200px;   

  4.  height: 300px;   

  5.  background-color: rgba(255, 0, 0, .5);   

  6. }   

  7. .main {   

  8.  height: 300px;   

  9.  margin-left: 210px;   

  10.  background-color: rgba(0, 255, 0, .5);   

  11. }  

這種實現(xiàn)方式比較簡單,首先把子列浮動到左邊,然后在主列上設置 margin-left 為子列留出顯示空間即可。

那么,這種方式支不支持調(diào)換列的位置呢?當然可以。CSS代碼如下:

CSS Code復制內(nèi)容到剪貼板

  1. .sidebar {   

  2.  float: rightright;   

  3.  width: 200px;   

  4.  height: 300px;   

  5.  background-color: rgba(255, 0, 0, .5);   

  6. }   

  7. .main {   

  8.  height: 300px;   

  9.  margin-right: 210px;   

  10.  background-color: rgba(0, 255, 0, .5);   

  11. }  

問題所在:

看起來 float + margin 方式是個好辦法,然而我們前面提到過的主列在前優(yōu)先顯示的優(yōu)化卻不能實現(xiàn)。

3. float + 負margin 方式

廢話不多說,直接上代碼:

XML/HTML Code復制內(nèi)容到剪貼板

  1. <div class="main-wrapper">  

  2.     <div class="main">主列</div>  

  3. </div>  

  4. <div class="sidebar">子列</div>  

CSS Code復制內(nèi)容到剪貼板

  1. .main-wrapper {   

  2.  float: left;   

  3.  width: 100%;   

  4. }   

  5. .main {   

  6.  height: 100px;   

  7.  margin-left: 210px;   

  8.  background-color: rgba(255, 0, 0, .5);   

  9. }   

  10. .sidebar {   

  11.  float: left;   

  12.  width: 200px;   

  13.  height: 100px;   

  14.  margin-left: -100%;   

  15.  background-color: rgba(0, 255, 0, .5);   

  16. }  

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

當前題目:CSS中怎么實現(xiàn)兩列布局
轉(zhuǎn)載來于:http://muchs.cn/article28/pdgpcp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、品牌網(wǎng)站建設做網(wǎng)站、、靜態(tài)網(wǎng)站虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管