使用flex 實現聖杯布局

2021-09-24 07:14:50 字數 2253 閱讀 5107

移動端flex布局最近挺火的,空閒時間也看了些資料!好記性不如賴筆頭,做下筆記吧。閒話少說 先上**。

"container">

"header">頭部

"center">

"dyleft">左欄div

"dycenter">dycenter

"dyright">右欄divx

"footer">底部

複製**

css **:

html, body 

#container

#header, #footer

#center

#dyleft, #dyright

#dycenter

複製**

flex屬性解釋:

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選。

flex-grow官方解釋:設定或檢索彈性盒的擴充套件比率。

根據彈性盒子元素所設定的擴充套件因子作為比率來分配剩餘空間。

.flex

.flex li:nth-child(1)

.flex li:nth-child(2)

.flex li:nth-child(3)

flex-grow的預設值為0,如果沒有顯示定義該屬性,是不會擁有分配剩餘空間權利的。

本例中b,c兩項都顯式的定義了flex-grow,flex容器的剩餘空間分成了4份,其中b佔1份,c佔3分,

即1:3

flex容器的剩餘空間長度為:600-200-50-50=300px,所以最終a,b,c的長度分別為:

a: 200px

b: 50+(300/4*1)=125px

a: 50+(300/4*3)=275px

複製**

flex-shrink:用數值來定義收縮比率。不允許負值。

設定或檢索彈性盒的收縮比率。

.flex

.flex li

.flex li:nth-child(3)

flex-shrink的預設值為1,如果沒有顯示定義該屬性,將會自動按照預設值1在所有因子相加

之後計算比率來進行空間收縮。

本例中c顯式的定義了flex-shrink,a,b沒有顯式定義,但將根據預設值1來計算,可以看到總共

將剩餘空間分成了5份,其中a佔1份,b佔1份,c佔3分,即1:1:3

我們可以看到父容器定義為400px,子項被定義為200px,相加之後即為600px,超出父容器200px。

那麼這麼超出的200px需要被a,b,c消化

通過收縮因子, 200 /5 = 40;

最後a,b,c的實際寬度分別為:200-40=160px, 200-40=160px, 200-120=80px

複製**

flex-basis:length|percent | auto | content

用長度值來定義寬度。不允許負值

percent

用百分比來定義寬度。不允許負值

auto:

無特定寬度值,取決於其它屬性值

content:

基於內容自動計算寬度

設定或檢索彈性盒伸縮基準值。

複製**

**顯示 box 總共寬 600px 每個li 設定寬100px .一共5個。那麼就是500px.但是li 也就是c 寬設定了600px. 我去 這一共寬600 + 400 =1000px 大於600px.不行啊肯定!

那怎麼辦?那就把別的li壓縮啊。一共1000.那麼100/1000 = 0.1(abde佔比)

600/1000 = 0.6(c的佔比)

1000-600 = 400px 那麼這400px *0.1 = 40;400*0.6 = 240;

so a、b、d、e 寬度:100-40=60;

c:600- 60*4 = 360;

ok???應該沒毛病吧

???google瀏覽器上為毛顯示的寬是61??狐火上顯示60.8??我***算的是60?難道是誤差?

有知道的請留下言 謝謝!!

備註:

使用flex實現聖杯布局

聖杯布局就是所說的3欄布局,左右定寬,中間自適應。使用position和float來實現就不說了,主要說一下用flex怎麼來實現 html 我是左邊 我是中間 我是右邊 css content left middle rightflex代表3個屬性flex grow,flex shrink和flex...

flex 聖杯布局

基本思路 聖杯布局分為3段 上 中 下。中段被分為 左 中 右3塊。1 採用flex布局時,先把彈性容器主軸設定為垂直方向 flex direction column 2 上 中 下3塊彈性專案設定均勻拉伸 flex 1 或固定上 下兩端大小,讓中間自動拉伸。注意 flex 拉伸是方向為主軸方向 3...

flex做的聖杯布局

首先聖杯布局是兩列固定寬度,中間自適應。我直接說一下步驟,上圖,上圖 1.步驟1 2.步驟2 上面就是基本的步驟,下面我把 給大家,大家感興趣自己拿回去偷偷的擼就可以 將整個頁面設定為彈性盒 html,body 設定頭部和尾部的顏色 footer,header 設定中間內容區域樣式 center 設...