聖杯布局和雙飛翼布局

2021-09-13 03:11:55 字數 3585 閱讀 1623

聖杯布局和雙飛翼布局均是上中下結構,其中,中間部分又分為左中右三部分,左右兩側寬度固定,中間部分寬度自適應;上中下的結構比較簡單,使用三個div就可以實現,中間部分的左右兩側內容寬度固定,中間內容寬度自適應,實現起來就比較有技巧性,具體如下:

聖杯布局的html結構:

class

="container"

>

class

="header"

>

headerdiv

>

class

="main"

>

class

="center"

>

centerdiv

>

class

="left"

>

leftdiv

>

class

="right"

>

rightdiv

>

div>

class

="footer"

>

footerdiv

>

div>

聖杯布局中比較重要的就是中間部分樣式的設定:

1、讓左、中、右均浮動,(浮動會造成父元素高度坍塌,注意清除浮動帶來的影響)

.center, .left, .right

// 父元素解決浮動導致的高度坍塌

.main

2、左右兩側寬度固定,中間寬度設定為100%,(方便觀察效果,為左中右設定最小高度)

.left, .right

.center

.center, .left, .right

3、由於中間寬度100%,左中右均浮動,所以左右兩側會在換行顯示,為了讓左右兩側與中間部分在一行,分別為左右兩側分別設定負地margin值,對於左側:margin-left: -100%;(margin值為百分比時,其值是相對于父元素的寬度來計算的),對於右側:margin-left: 負的右側寬度;,這樣一來,左中右三部分就處於同一行了

.left

.right

4、這個時候會存在乙個問題:就是左右兩側會覆蓋住中間部分的內容,為了解決這個問題,需要給父元素設定padidng,左右padding的值分別為左右兩側的寬度

.main

5、父元素設定完後padding後,頁面中左右兩側會出現空白,這時候通過相對定位以及left、right屬性分別將左右兩側移動到空白處,至此聖杯布局的中間部分就完成了!!!

.left

.right

雙飛翼的html結構:

class

="container"

>

class

="header"

>

headerdiv

>

class

="main"

>

class

="center"

>

class

="content"

>

centerdiv

>

div>

class

="left"

>

leftdiv

>

class

="right"

>

rightdiv

>

div>

class

="footer"

>

footerdiv

>

div>

雙飛翼中間部分樣式的設定:

1、讓左、中、右均浮動,(浮動會造成父元素高度坍塌,注意清除浮動帶來的影響)

.center, .left, .right

// 父元素解決浮動導致的高度坍塌

.main

2、左右兩側寬度固定,中間寬度設定為100%,(方便觀察效果,為左中右設定最小高度)

.left, .right

.center

.center, .content, .left, .right

3、由於中間寬度100%,左中右均浮動,所以左右兩側會在換行顯示,為了讓左右兩側與中間部分在一行,分別為左右兩側分別設定負地margin值,對於左側:margin-left: -100%;(margin值為百分比時,其值是相對于父元素的寬度來計算的),對於右側:margin-left: 負的右側寬度;,這樣一來,左中右三部分就處於同一行了

.left

.right

4、這個時候會存在乙個問題:就是左右兩側會覆蓋住中間部分的內容,為了解決這個問題,雙飛翼通過為中間部分新增乙個子元素,為子元素設定margin來防止中間內容被覆蓋,至此雙飛翼布局的中間部分就完成了!!!

.content

從上面的實現過程中可以看出:雙飛翼布局與聖杯布局有相似之處,也有不同之處,相似之處在於也是讓中間的左中右三部分浮動,並通過負的margin值讓左右兩側與中間部分處於一行;不同之處在於在解決中間內容被左右兩側覆蓋時,聖杯布局通過向父元素新增padding和利用左右兩側的相對定位來處理,雙飛翼則是通過為中間部分新增乙個子標籤,通過設定子標籤的margin值來處理中間內容被覆蓋;

上面的是利用css2方式來實現的,下面給出乙個利用css3的flex彈性布局來實現的聖杯布局:

html結構:

class

="container"

>

class

="header"

>

headerdiv

>

class

="main"

>

class

="center"

>

centerdiv

>

class

="left"

>

leftdiv

>

class

="right"

>

rightdiv

>

div>

class

="footer"

>

footerdiv

>

div>

css樣式:

.container

.header, .footer

.main

.left, .right, .center

.left, .right

.left

.center

[1] 聖杯和雙飛翼布局介紹

聖杯布局 雙飛翼布局

前言 上班划水偷空了解了一下聖杯布局和雙飛翼布局,一聽這兩個名字,覺得不明覺厲,其實就是三欄布局,左右兩邊的盒子寬度固定,中間的盒子寬度自適應。以下內容均是總結網際網路上別人的文章。覺得有意思就記錄一下。聖杯布局,方法一 container middle left right style head ...

聖杯布局和雙飛翼布局

雙飛翼布局和聖杯布局其實是我們經常會在 中看到的經典的三欄式布局,即中間是主要內容main content,然後是左邊側欄,一般是 的分類資訊,右邊欄就是一些附屬功能,最典型的例子就是 和京東。main main son left right 上面就是雙飛翼布局的html 結構非常清晰,分為main...

聖杯布局和雙飛翼布局

一 聖杯布局 重點 content的padding,left的margin left和left值,right的margin left和right值 lang en charset utf 8 聖杯布局title header content content main content left,con...