css的常見6種布局方式

2021-10-16 13:15:21 字數 3579 閱讀 2629

下面主要是針對三欄布局進行介紹:常見的三欄布局有,流體布局、聖杯布局、雙飛翼布局、flex布局、絕對定位布局、網格布局

流體布局

兩邊的寬度是固定的,中間的寬度是可以根據螢幕的大小進行改變的。實現的關鍵點是,左邊還有右邊的元素分別給他們設定浮動,即左邊設定成左浮動,右邊是右浮動,並且要設定成固定的寬高;中間的主要模組,使用margin-left還有margin-right進行設定(設定的值為到父元素兩側的距離,這裡指的就是到container這個父元素邊距的距離)

.left

.right

.main

"container">

"left">

"right">

"main">

聖杯布局

跟雙飛翼布局很像,有一些細節上的區別,相對於雙飛翼布局來說,html 結構相對簡單,但是樣式定義就稍微複雜,也是優先載入內容主體

實現的效果:兩側的寬度是固定的,中間main的寬度會隨著螢幕的寬度進行變化

實現步驟

把 left 放上去,由於浮動的關係,給 left 設定margin-left: -100%即可使左側欄浮動到 center 上面,並位於 center 左側之上。

同樣為 right 設定margin-left: -200px,這裡的長度等於 right 的長度

這時 center 的兩側被 left 和 right 覆蓋了,因此給 container設定padding: 0 200px

由於 left 和 right 也同時往中間縮,因此給 left 和 right 分別設定left: -200px; right: -200px,往兩側分別偏移自身的寬度去覆蓋掉 contaniner 使用padding後的空白位置。

.container

.container > div

.main

.left

.right

"container">

"main">

"left">

"right">

區分margin-left與left

一、在有定位宣告的情況下:即position:absolute,relative,fixed這幾種情況下

1>只有margin-left:這樣子position的宣告沒有任何作用,因為即使宣告了,也得靠left,top來調整位置,如果沒有left等,則position失效,元素位置仍為其該在的位置,margin-left還是相對於其父元素的距離

2>只有left等:正常情況

3>同時有margin-left和left:這種情況下,定位是有作用的,在定位完成後margin-left再起作用,即margin-left和left是可以疊加的

二、在無定位宣告或position:static的情況下

left等的定義無效,margin-left有效
雙飛翼布局

利用的是浮動元素 margin 負值的應用。主體內容可以優先載入,html **結構稍微複雜點。

實現步驟

把 left 放上去,由於浮動的關係,給 left 設定margin-left: -100%即可使左側欄浮動到 center 上面,並位於 center 左側之上。

同樣為 right 設定margin-left: -200px,這裡的長度等於 right 的長度

給 main 設定margin: 0 200px,同時設定overflow: hidden使其成為乙個bfc

.container

.container > div

.center

.left

.right

.main

"container">

"center">

"main">

center

"left">

left

"right">

right

flex布局

實現步驟

給 container 設定為乙個 flex 容器display: flex

center 的寬度設定為width: 100%,left 和 right 設定為width: 200px

為了不讓 left 和 right 收縮,給它們設定flex-shrink: 0

使用order屬性給三個部分的 dom 結構進行排序:left:order: 1,center:order: 2,right:order: 3

.container

.center

.left

.right

"container">

"center">

center

"left">

left

"right">

right

極其靈活

絕對定位布局

實現步驟

給 container 設定position: relative和overflow: hidden,因為絕對定位的元素的參照物為第乙個postion不為static的祖先元素。

left 向左浮動,right 向右浮動。

center 使用絕對定位,通過設定left和right並把兩邊撐開。

center 設定top: 0和bottom: 0使其高度撐開。

.center

"container">

"center">

center

"left">

left

"right">

right

缺點是依賴於left 和 right 的高度,如果兩邊欄的高度不夠,中間的內容區域的高度也會被壓縮。

網格布局

實現步驟

給 container 設定為display: grid

設定三欄的高度:grid-template-rows: 100px

設定三欄的寬度,中間自適應,兩邊固定:grid-template-columns: 200px auto 200px;

.container

"container">

"left">

left

"center">

center

"right">

right

使用起來極其方便

CSS常見布局方式

如下 child1 child2 clearfix after給兩個子元素新增float,然後給它們的父元素新增clearfix類用於清除浮動。child1 child2 child3 設定main寬度為100 再設定兩個側欄的寬度。設定 負邊距,child2設定 負左邊距 為100 child3設...

css常見布局方式

布局是css中乙個重要部分,下面總結了css布局中的常用技巧,包括常用的水平居中 垂直居中方法,以及單列布局 多列布局的多種實現方式 包括傳統的盒模型布局和比較新的flex布局實現 一 居中方式 水平居中 水平居中對於子元素為行內元素還是塊狀元素,寬度一定還是寬度未定,採取的布局方案是不同。行內元素...

CSS 常見的css布局

1 單列布局 主要使用max width屬性樣式實現,使用max width是為了當螢幕小於2000px時不出現滾動條 2 兩列自適應布局 兩列自適應布局是指一列由內容撐開,另一列撐滿剩餘寬度的布局方式,為了觸發ie瀏覽器的haslayout屬性,需設定zoom 1 2.1 使用float over...