css flex 彈性布局詳解

2022-09-21 10:45:10 字數 1944 閱讀 8222

案例基礎布局

html

上面我給每個item 都設定了 不同的高度 和 line-height;

可以看到 容器為了讓文字對齊 而調整自己的位置;

align-content

定義了多根軸線的對齊方式。如果專案只有一根軸線,該屬性不起作用。

.box

嘗試新增 **

align-content: flex-end;

align-content:space-around;

align-content:space-between;

align-content : center;

可以說,flex布局在父元素上對子元素垂直方向的控制還是非常到位和明確的;

子元素屬性**

order

大概可以理解為子元素的排隊號碼,預設都是0,越大排隊越後;

可以看到,1 號因為 order 設定為10排到了後面; 而2號因為更加大的order 而排到最後。

flex-grow 多餘空間分配比例

它的值是乙個number,預設為0;只要有乙個同軸元素被設定了flex-grow ,所有多餘空間都會按照這個比例分配,並讓元素佔滿整行。這個被分配的空間,是算在自身裡面的;

盒子寬度變大了,(就是grow啦)

如果子元素有margin,那麼會先計算橫排多少個,再決定 flex-grow 分配的空間是多少

例如如下**,

//沒有設定 flex-grow 時

//設定了 flex-grow 時

所以,margin 並不算 多餘空間 ,不會被重新分配;

flex-shrink

此屬性與 flex-grow 有點相反的意思,用於處理 不換行時,內容超出螢幕了,應該決定誰來縮小;

值越大 縮小比例越大;預設是 1

改一下**;

.box

此時 父盒子規定不能換行;但是5個item 寬度已經超過螢幕寬了;此時大家是等比縮小

下面設定1號 flex-shrink:600

可以看到,儘管我把1號設定到縮放非常大了,但是實際寬度並沒有很小;說明瀏覽器會自己決定內容是否已經足夠放下,夠了就停止縮放;

當內容非常多時,1號就明顯被縮放得非常厲害,同時我發現,4號儘管設定200,但是它的大小跟被設為600的 1號是一樣的。

這是因為他們已經縮放到最後只能容納文字的空間了;所以就不會再縮放下去;這跟文字佔位乙個道理

flex-basis

屬性定義了在分配多餘空間之前,專案佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即專案的本來大小。

簡單來說,就是這個值會影響瀏覽器計算的輸入值,有四種情況

1,本來就會超出,然後你設定的值比原值低(原值200px每個item),你的元素會被壓縮。

1,本來就會超出,然後你設定的值比原值大,你的元素會被相對放大些。

3 本來不會超出,你設定的值比原來小,你還是會小一點

4 本來不會超出,你設定的值比原來大,你就會更大

這個值你可以當做寬度來看,當設定為 跟原來一樣的值得時候,基本沒有變化

align-self

此子元素單獨設定垂直方向對齊方式;預設auto 表示父親怎麼定義就怎麼來;其他值跟align-items是一樣的

此屬性主要是方便特殊定位 某個字元素

flex屬性

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

.item

該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。

建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關值。

最後移動端使用flex 布局感覺還是非常給力的,並且通常滿足各個螢幕自適程式設計客棧應的要求;有機會還是要多實踐起來。

本文標題: css flex 彈性布局詳解

本文位址:

CSS Flex彈性布局 筆記

flexbox 是 flexible box 的簡稱 注 意思是 靈活的盒子容器 是 css3 引入的新的布局模式。它決定了元素如何在頁面上排列,使它們能在不同的螢幕尺寸和裝置下可 地展現出來。它之所以被稱為 flexbox 是因為它能夠擴充套件和收縮 flex 容器內的元素,以最大限度地填充可用空...

css flex彈性盒模型布局

三 作用在子容器的樣式 flex特性 當多個div子元素寫在父容器,他們會併排在一行,父容器會自動調節子容器大小,使他們併排在一起,但不會容下無限個,會根據子容器中的內容決定,當內容多過父容器的大小時,其他的子容器會溢位在父容器外。這時,可以通過flex wrap對子容器進行換行。當父容器displ...

CSS Flex彈性布局實現Div

前言前端樣式開發時經常會遇到 當子 div 長度大於 父 div 中需要實現換行時,我們採取flex布局解決此問題。如下 div 開啟應用div div div 開啟應用div div div 開啟應用div div div 開啟應用div div div 開啟應用div div div div 樣...