您好,登錄后才能下訂單哦!
CSS中怎么實現兩列布局,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1. absolute + margin 方式
首先想到的是利用 absolute + margin 的方式實現。先看看代碼:
XML/HTML Code復制內容到剪貼板
<div class="container">
<div class="sidebar">子列</div>
<div class="main">主列</div>
</div>
CSS Code復制內容到剪貼板
.container {
position: relative;
}
.sidebar {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 300px;
background-color: rgba(255, 0, 0, .5);
}
.main {
height: 300px;
margin-left: 210px;
background-color: rgba(0, 255, 0, .5);
}
該方式利用 position 讓 sidebar 列脫離文檔流,然后通過 main 列的 margin-left 移除被 sidebar 列覆蓋的部分。如此,我們就實現了定寬 + 自適應的兩列布局。
(1)列順序調整
在不修改 HTML 的情況下,只需簡單修改 CSS,我們可以讓左右兩列順序互換,來看代碼:
CSS Code復制內容到剪貼板
.sidebar {
position: absolute;
top: 0;
rightright: 0;
}
.main {
margin-right: 210px;
}
(2)主內容列優先顯示
讓我們考慮的更完美一點,可不可以把 main 列放 sidebar 列 的前面,使主要內容優先加載渲染? Let us try!
XML/HTML Code復制內容到剪貼板
<div class="container">
<div class="main">主列</div>
<div class="sidebar">子列</div>
</div>
做上面的簡單調整即可,CSS不需要任何修改!
(3)問題所在
雖然這種方式的優點很多,但是卻存在一個致命缺點。因為 sidebar 列脫離了文檔流,當 sidebar 列比 main 列高時會覆蓋后面的布局:問題demo。
如果在 container 容器上 添加 overflow:hidden 就會使 sidebar 溢出部分被裁減。在這種布局方式下,這個問題確實沒有有效的解決辦法。
2. float + margin 方式
然后想到的就是 float + margin 來實現兩列布局,首先實現左欄定寬,主內容自適應的兩欄布局。代碼如下:
XML/HTML Code復制內容到剪貼板
<div class="sidebar">子列</div>
<div class="main">主列</div>
CSS Code復制內容到剪貼板
.sidebar {
float: left;
width: 200px;
height: 300px;
background-color: rgba(255, 0, 0, .5);
}
.main {
height: 300px;
margin-left: 210px;
background-color: rgba(0, 255, 0, .5);
}
這種實現方式比較簡單,首先把子列浮動到左邊,然后在主列上設置 margin-left 為子列留出顯示空間即可。
那么,這種方式支不支持調換列的位置呢?當然可以。CSS代碼如下:
CSS Code復制內容到剪貼板
.sidebar {
float: rightright;
width: 200px;
height: 300px;
background-color: rgba(255, 0, 0, .5);
}
.main {
height: 300px;
margin-right: 210px;
background-color: rgba(0, 255, 0, .5);
}
問題所在:
看起來 float + margin 方式是個好辦法,然而我們前面提到過的主列在前優先顯示的優化卻不能實現。
3. float + 負margin 方式
廢話不多說,直接上代碼:
XML/HTML Code復制內容到剪貼板
<div class="main-wrapper">
<div class="main">主列</div>
</div>
<div class="sidebar">子列</div>
CSS Code復制內容到剪貼板
.main-wrapper {
float: left;
width: 100%;
}
.main {
height: 100px;
margin-left: 210px;
background-color: rgba(255, 0, 0, .5);
}
.sidebar {
float: left;
width: 200px;
height: 100px;
margin-left: -100%;
background-color: rgba(0, 255, 0, .5);
}
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。