首頁  >  文章  >  web前端  >  CSS有幾種實現三欄佈局的方法

CSS有幾種實現三欄佈局的方法

php中世界最好的语言
php中世界最好的语言原創
2018-03-22 09:40:031930瀏覽

這次帶給大家CSS有幾種實現三欄佈局的方法,CSS實現三欄佈局的注意事項有哪些,下面就是實戰案例,一起來看一下。

前言

其實不管是三欄佈局還是兩欄佈局都是我們在平時專案裡經常使用的,也許你不知道什麼事三欄佈局什麼是兩欄佈局但實際上已經在用,或許你知道三欄佈局的一種或兩種方法,但實際操作中也只會依賴那某一種方法,本文具體的介紹了三欄佈局的四種方法,並介紹了它的使用場景。

所謂三欄佈局就是指頁面分成左中右三部分然後對中間一部分做自適應的一種佈局方式。

1.絕對定位

#HTML程式碼如下:

<p class="left">Left</p>
<p class="main">Main</p>
<p class="right">Right</p>

CSS程式碼如下:

//简单的进行CSS reset
body,html{
    height:100%;
    padding: 0px;
    margin:0px;
}
//左右绝对定位
.left,.right{
    position: absolute;
    top:0px;
    background: red;
    height:100%;
}
.left{
    left:0;
    width:100px;
}
.right{
    right:0px;
    width:200px;
}
//中间使用margin空出左右元素所占据的空间
.main{
    margin:0px 200px 0px 100px;
    height:100%;
    background: blue;
}

此方法有個明顯的缺點,就是如果中間欄含有最小寬度限制,或是含有寬度的內部元素,當瀏覽器寬度小到一定程度,會發生層重疊的情況。

2. 聖杯佈局

HTML程式碼如下:

//注意元素次序
<p class="main">Main</p>
<p class="left">Left</p>
<p class="right">Right</p>

CSS程式碼如下:

//习惯性的CSS reset
body,html{
    height:100%;
    padding: 0;
    margin: 0
}
//父元素body空出左右栏位
body {
    padding-left: 100px;
    padding-right: 200px;
}
//左边元素更改
.left {
    background: red;
    width: 100px;
    float: left;
    margin-left: -100%;
    position: relative;
    left: -100px;
    height: 100%;
}
//中间部分
.main {
    background: blue;
    width: 100%;
    height: 100%;
    float: left;
}
//右边元素定义
.right {
    background: red;
    width: 200px;
    height: 100%;
    float: left;
    margin-left: -200px;
    position: relative;
    right: -200px;
}

#相關解釋如下:

      (1)中間部分需要依照瀏覽器寬度的變化而變化,所以要用100%,這裡設左中右向左浮動,因為中間100% ,左層和右層根本沒有位置上去

      (2)把左層margin負100後,發現left上去了,因為負到出窗口沒位置了,只能往上挪

#      (3)依第二步這個方法,可以得出它只要挪動窗口寬度那麼寬就能到最左邊了,利用負邊距,把左右欄定位

      (4)但由於左右欄遮擋住了中間部分,於是採用相對定位方法,各自相對於自己把自己挪出去,得到最終結果

3. 雙飛翼佈局

#HTML程式碼如下:

<p class="main">
    <p class="inner">
        Main
    </p>
</p>
<p class="left">Left</p>
<p class="right">Right</p>

CSS程式碼如下:

//CSS reset
body,html {
    height:100%;
    padding: 0;
    margin: 0
}
body {
    /*padding-left:100px;*/
    /*padding-right:200px;*/
}
.left {
    background: red;
    width: 100px;
    float: left;
    margin-left: -100%;
    height: 100%;
    /*position: relative;*/
    /*left:-100px;*/
}
.main {
    background: blue;
    width: 100%;
    float: left;
    height: 100%;
}
.right {
    background: red;
    width: 200px;
    float: left;
    margin-left: -200px;
    height: 100%;
    /*position:relative;*/
    /*right:-200px;*/
}
//新增inner元素
.inner {
    margin-left: 100px;
    margin-right: 200px;
}

聖杯佈局實際上看起來是複雜的後期維護性也不是很高,在淘寶UED的探討下,出來了一種新的佈局方式就是雙飛翼佈局,程式碼如上。增加多一個p就可以不用相對佈局了,只用到了浮動和負邊距。和聖杯佈局差異的地方已經被註釋。 4. 浮動

HTML程式碼如下:

//注意元素次序
<p class="left">Left</p>
<p class="right">Right</p>
<p class="main">Main</p>

CSS程式碼如下:

//CSS reset
body,html {
    height:100%;
    padding: 0;
    margin: 0
}
//左栏左浮动
.left {
    background: red;
    width: 100px;
    float: left;
    height: 100%;
}
//中间自适应
.main {
    background: blue;
    height: 100%;
    margin:0px 200px 0px 100px;
}
//右栏右浮动
.right {
    background: red;
    width: 200px;
    float: right;
    height: 100%;
}

這種方式程式碼夠簡潔與高效,也容易理解總結

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

用HTML+CSS實作下拉選單

#用CSS3實作發光方格邊框

### ###CSS做出滑鼠上移圖示旋轉#########

以上是CSS有幾種實現三欄佈局的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn