CSS3 彈性盒子及其屬性概述

彈性布局定義

CSS3 彈性盒子( Flexible Box) 也叫 彈性布局是一種當(dāng)頁面需要適應(yīng)不同的屏幕大小以及設(shè)備類型時(shí)確保元素?fù)碛星‘?dāng)?shù)男袨榈牟季址绞健?/p>

引入彈性盒布局模型的目的是提供一種更加有效的方式來對(duì)一個(gè)容器中的子元素進(jìn)行排列、對(duì)齊和分配空白空間。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):1 、布局方式多種多樣,包含了很多其他布局方式的特性

? ? ? ? ? ? 2、相對(duì)于使用浮動(dòng),更加方便,也少了清除浮動(dòng)等麻煩

? ? ? ? ? ?3、?應(yīng)用恰當(dāng)?shù)膹椥圆季謱?duì)用戶十分友好。頁面中所有的元素可以隨著用戶的偏好縮放。

缺點(diǎn):

? ? ? ? ? ? 1、因?yàn)椴季謽邮降亩喾N多樣,就需要花很多時(shí)間去理解和測試。布局難度相對(duì)較大

彈性盒子內(nèi)容

彈性盒子可以簡單分為彈性容器和容器成員

? ? ?容? 器:給一個(gè)盒子設(shè)置display:flex屬性或?inline-flex 后,它就變成了彈性容器(flex?container)

容器成員:它的所有子元素自動(dòng)成為容器成員,稱為flex彈性元素?(不包括孫元素和絕對(duì)定位元素),彈性布局只會(huì)修改子元素的布局方式

一、容器

彈性布局也可以大體分為主軸方向和輔軸方向

1、flex元素在輔軸之間的排列方式

①、主軸排列方向:flex-direction?

flex-direction: row? ?---默認(rèn),?主軸方向?yàn)樗剑琭lex元素從左往右排列

flex-direction: row-reverse --- 主軸方向?yàn)樗剑琭lex元素從右往左排列

flex-direction:?column ---主軸方向?yàn)榇怪?,flex元素從上往下排列

flex-direction:column-reverse ---主軸方向?yàn)榇怪保琭lex元素從下往上排列

②、主軸方向的換行

flex-wrap:?nowrap ---默認(rèn),flex元素的總寬度超過flex容器時(shí)不會(huì)換行,flex元素的寬度會(huì)自動(dòng)伸縮

flex-wrap: wrap ---flex元素的總寬度超過flex容器時(shí)會(huì)換行,flex元素寬度不變

flex-wrap:wrap-reverse ---反轉(zhuǎn)換行,(較少使用)

③、簡寫

flex-direction:?row;? ? ? flex-wrap:?wrap;? ?等同于flex-flow:?row?wrap;

flex-flow?是flex-direction和flex-wrap的簡寫形式,默認(rèn)值為row?nowrap

④、控制子盒子在主軸上的分布

justify-content:---flex元素在主軸上的分布

justify-content:?flex-start; ---(默認(rèn)) 從主軸前面開始


justify-content: flex-end;???---從主軸的后面開始


justify-content:?center;? ---在主軸的中間居中排列


justify-content:?space-between;? ---兩端分布盒子與盒子之間留有相同空白


justify-content:?space-around; ---兩端分布每個(gè)盒子左右兩邊都有相同的外間隔,且兩個(gè)子盒子之間的外間隔不會(huì)重疊


justify-content:?space-evenly; ---均勻分布,每個(gè)flex元素的間隔相等

2、?flex元素在輔軸之間的排列方式

align-content:flex元素在輔軸上的分布(以下例子主軸排列為 justify-content:?flex-start;)

align-content:?stretch; ---當(dāng)flex元素沒有設(shè)置高度或高度設(shè)置為auto時(shí),將flex元素的高度伸展

align-content:?flex-start; ---從輔軸開頭開始


align-content:?flex-end; ---從輔軸后面開始


align-content:?center; ---在輔軸上居中排列


align-content:?space-between; ---兩端分布盒子與盒子之間留有相同空白


align-content:?space-around; ---兩端分布每個(gè)盒子左右兩邊都有相同的外間隔,且兩個(gè)子盒子之間的外間隔不會(huì)重疊


align-content:?space-evenly; ---均勻分布,每個(gè)flex元素的間隔相等


3、flex元素之間的對(duì)齊方式

align-items?:flex元素之間的對(duì)齊方式

align-items:?stretch; ---當(dāng)flex元素沒有設(shè)置高度或高度設(shè)置為auto時(shí),將flex元素的高度伸展

(如果其中有一個(gè)設(shè)置了高度,則伸展長度為設(shè)置高度中的最大值)

align-items:?flex-start; ---頂部對(duì)齊


align-items:?flex-end; ---底部對(duì)齊

align-items:?center; ------居中對(duì)齊

align-items:?baseline; ---沿第一行文字的基線對(duì)齊


align-self: ---設(shè)置單個(gè)flex元素的對(duì)齊方式,可以覆蓋align-items的屬性

auto? ---默認(rèn)值。元素繼承了它的父容器的 align-items 屬性。如果沒有父容器則為 "stretch"。

stretch? ---元素被拉伸以適應(yīng)容器。如果指定側(cè)軸大小的屬性值為'auto',則其值會(huì)使項(xiàng)目的邊距盒的尺寸盡可能接近所在行的尺寸,但同時(shí)會(huì)遵照'min/max-width/height'屬性的限制。

center ---元素位于容器的中心。彈性盒子元素在該行的側(cè)軸(縱軸)上居中放置。(如果該行的尺寸小于彈性盒子元素的尺寸,則會(huì)向兩個(gè)方向溢出相同的長度)。

flex-start ---元素位于容器的開頭。彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠住該行的側(cè)軸起始邊界。

flex-end ---元素位于容器的結(jié)尾。彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠住該行的側(cè)軸結(jié)束邊界。

baseline ---元素位于容器的基線上。如彈性盒子元素的行內(nèi)軸與側(cè)軸為同一條,則該值與'flex-start'等效。其它情況下,該值將參與基線對(duì)齊。


order? ---定義flex元素的排列順序,數(shù)值越小排列越靠前,默認(rèn)為0,?只能是整數(shù)?

flex-grow ---當(dāng)flex容器有剩余空間時(shí),?flex元素如何分配剩余的空間 ,默認(rèn)0,?不放大,不占據(jù)剩余空間/1,?放大,占據(jù)剩余空間

flex-shirnk ---當(dāng)flex容器空間不足時(shí),?flex元素是否縮小,默認(rèn)1,?flex元素等比例縮小 / 0,?不縮小

flex-basis ---flex元素本來的大小

?簡寫:? flex-grow:?1;? flex-shrink:?1;? ? flex-basis:?auto? 簡寫: flex:?1?1?auto;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容