彈性盒子布局模型
是一種用于按行或按列布局元素的 一維布局方法。元素可以膨脹以填充額外的空間啄巧,收縮以適應(yīng)更小的空間。
示例1: 正常流布局
.css
section{
display: block;
}
.html
<header>
<h3>Sample flexbox example</h3>
</header>
<section>
<article>
<h4>First article</h4>
<p>Tacos actually microdosing</p>
</article>
<article>
<h4>Second article</h4>
<p>Tacos actually microdosing</p>
</article>
<article>
<h4>Third article</h4>
<p>Tacos actually microdosing</p>
<p>Cray food truck brunch</p>
</article>
</section>
效果:示例2: 彈性盒子布局 修改 display
的值 為flex
section{
display: flex;
}
article {
padding: 5px;
margin: 5px;
background: aqua;
width: 100%; // 充滿(mǎn)空間
}
效果:flex 模型的概念說(shuō)明
- 主軸(main axis):是沿著 flex 元素放置的方向延伸的軸(比如頁(yè)面上的橫向的行、縱向的列)蜓萄。該軸的開(kāi)始和結(jié)束被稱(chēng)為 main start 和 main end庄新。
- 交叉軸(cross axis):是垂直于 flex 元素放置方向的軸鞠眉。該軸的開(kāi)始和結(jié)束被稱(chēng)為 cross start 和 cross end。
-
flex 容器(flex container):設(shè)置了
display: flex
的父元素择诈。(在本例中是<section>
被稱(chēng)之為 flex 容器(flex container)械蹋。 -
flex 項(xiàng)(flex item):在 flex 容器中表現(xiàn)為柔性的盒子的元素。 (本例中是
<article>
元素羞芍。
?
?
屬性 flex-direction
決定彈性盒子內(nèi)部項(xiàng)的方向哗戈。
指定了內(nèi)部元素是如何在 flex 容器中布局的,定義了主軸的方向 (正方向或反方向)涩金。
語(yǔ)法:
flex-direction =
row |
row-reverse |
column |
column-reverse
取值:
row
:主軸與文本方向相同谱醇。主軸起點(diǎn)和主軸終點(diǎn)與內(nèi)容方向相同。row-reverse
:表現(xiàn)和 row 相同步做,但置換了主軸起點(diǎn)和主軸終點(diǎn)column
:主軸和塊軸相同副渴。主軸起點(diǎn)與主軸終點(diǎn)和書(shū)寫(xiě)模式的前后點(diǎn)相同column-reverse
:表現(xiàn)和column相同,但置換了主軸起點(diǎn)和主軸終點(diǎn)
?
?
屬性 flex-wrap
換行 處理溢出的布局
指定 flex
元素單行顯示還是多行顯示全度。如果允許換行煮剧,這個(gè)屬性允許你控制行的堆疊方向。
語(yǔ)法:
flex-wrap =
nowrap |
wrap |
wrap-reverse
取值
nowrap
:默認(rèn)值,flex 的元素被擺放到到一行勉盅,這可能導(dǎo)致 flex 容器溢出佑颇。cross-start 會(huì)根據(jù)flex-direction
的值等價(jià)于 start 或 before。wrap
:flex 元素 被打斷到多個(gè)行中草娜。cross-start 會(huì)根據(jù)flex-direction
的值等價(jià)于 start或before挑胸。cross-end 為確定的 cross-start 的另一端。wrap-reverse
:和wrap
的行為一樣宰闰,但是 cross-start 和 cross-end 互換茬贵。
示例:
如圖是未換行,且益處的 彈性布局:添加如下代碼:
section{
display: flex;
flex-wrap: wrap;
}
效果:也添加如下代碼:
article {
flex: 100px;
}
效果:?
?
屬性 flex-flow
簡(jiǎn)寫(xiě)屬性
是 flex-direction
和 flex-wrap
的簡(jiǎn)寫(xiě)移袍。
語(yǔ)法:
flex-flow = <'flex-direction'> || <'flex-wrap'>
?
?
屬性 flex
增大解藻,縮小
設(shè)置了彈性項(xiàng)目如何增大或縮小以適應(yīng)其彈性容器中可用的空間。
是簡(jiǎn)寫(xiě)屬性葡盗,其包含如下屬性:
flex-grow
螟左、flex-shrink
、flex-basis
語(yǔ)法:
flex =
none |
[ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
取值:
flex-grow
flex-shrink
flex-basis
單值語(yǔ)法:
- 一個(gè)無(wú)單位數(shù)
<number>
: 它會(huì)被當(dāng)作 flex:<number> 1 0; <flex-shrink>的值被假定為 1觅够,然后<flex-basis> 的值被假定為0胶背。 - 一個(gè)有效的 寬度 (width) 值:它會(huì)被當(dāng)作
flex-basis
的值。 - 關(guān)鍵字
none
蔚约、auto
奄妨、initial
.
雙值語(yǔ)法:
- 第一個(gè)值必須為一個(gè)無(wú)單位數(shù),并且它會(huì)被當(dāng)作
flex-grow
的值苹祟。- 第二個(gè)值必須為以下之一:
一個(gè)無(wú)單位數(shù):它會(huì)被當(dāng)作flex-shrink
的值砸抛。
一個(gè)有效的寬度值:它會(huì)被當(dāng)作flex-basis
的值。
- 第二個(gè)值必須為以下之一:
三值語(yǔ)法:
- 第一個(gè)值必須為一個(gè)無(wú)單位數(shù)树枫,并且它會(huì)被當(dāng)作
flex-grow
的值直焙。 - 第二個(gè)值必須為一個(gè)無(wú)單位數(shù),并且它會(huì)被當(dāng)作
flex-shrink
的值砂轻。 - 第三個(gè)值必須為一個(gè)有效的寬度值奔誓,并且它會(huì)被當(dāng)作
flex-basis
的值。
?
?
屬性 flex-grow
MDN介紹:
設(shè)置 flex 項(xiàng) 主尺寸 的 flex 增長(zhǎng)系數(shù)搔涝,負(fù)值無(wú)效厨喂,默認(rèn)為 0。
主尺寸:flex項(xiàng)的寬度或高度庄呈,取決于flex-direction
值蜕煌。
個(gè)人理解:
屬性規(guī)定了 flex項(xiàng) 在 flex 容器中分配剩余空間的 所占有相對(duì)比例。
剩余空間:是 flex 容器的大小減去所有 flex 項(xiàng)的大小加起來(lái)的空間诬留。
如果所有的兄弟項(xiàng)目
flex-grow
屬性值斜纪,都是一致的贫母,那么所有的項(xiàng)目 所占的剩余空間 ,按相同比例分配盒刚,否則將根據(jù)不同的flex-grow
定義的比例進(jìn)行分配腺劣。
語(yǔ)法:
flex-grow =
<number [0,∞]>
示例1:所有的flex項(xiàng)的 flex-grow
屬性值 全部為 0
,即默認(rèn)值因块,按相同比例分配橘原。
.html
<div id="content">
<div class="box box1" style="background-color:red;">A</div>
<div class="box box2" style="background-color:lightblue;">B</div>
<div class="box box3" style="background-color:yellow;">C</div>
<div class="box box4" style="background-color:brown;">D</div>
<div class="box box5" style="background-color:lightgreen;">E</div>
</div>
.css
#content{
width: 100px;
padding: 0px;
border: 2px solid black;
display: flex;
justify-content: space-around;
flex-flow: row wrap;
}
.box{
width: 10px;
}
效果:示例2:我們將 .box1 的 flex-grow
屬性值 改為 1
,添加如下代碼
.box1{
flex-grow: 1;
}
效果:代碼解析:
將 .box1 的flex-grow
屬性值 改為1
涡上。意味著:所有的剩余空間靠柑,全部分配給了 .box1。
即使你將 屬性值設(shè)為100
吓懈,結(jié)果也是一樣的,此時(shí)不論值為多少靡狞,.box 占有所有剩余空間耻警。
示例3:我們將 .box1 和 .box2 的 flex-grow
屬性值 改為 1
,添加如下代碼
.box1{
flex-grow: 1;
}
.box2{
flex-grow: 1;
}
效果:代碼解析:
將 .box1 和 .box2 的flex-grow
屬性值 都改為1
甸怕。意味著:所有的剩余空間甘穿,全部 平均 分配給了 .box1 和 .box2 ,各占1 / 2
梢杭。
示例4:我們將 .box2 的 flex-grow
屬性值 改為 2
温兼,添加如下代碼
.box1{
flex-grow: 1;
}
.box2{
flex-grow: 2;
}
效果:代碼解析:
將 ..box2 的flex-grow
屬性值 改為2
。意味著:所有的剩余空間武契,.box1 占1 / 3
募判,.box2 占2 / 3
;
示例5:看一下 flex項(xiàng) 換行之后咒唆,修改 flex-grow
屬性届垫,會(huì)是什么效果,添加如下代碼
.box{
width: 30px;
}
.box1{
flex-grow: 1;
}
.box4{
flex-grow: 1;
}
效果:代碼解析:
在第一行全释,所有的剩余空間装处,全部分配給了 .box1。
在第二行浸船,所有的剩余空間妄迁,全部分配給了 .box4。
?
?
屬性 flex-basis
MDN:指定了 flex 元素在主軸方向上的初始大小李命。如果不使用 box-sizing
改變盒模型的話(huà)登淘,那么這個(gè)屬性就決定了 flex 元素的內(nèi)容盒(content-box)的尺寸。
語(yǔ)法:
flex-basis =
content |
<'width'>
<'width'> =
<length> |
<percentage>
語(yǔ)法示例:
指定<'width'>
flex-basis: 10em;
flex-basis: 3px;
flex-basis: auto;
固有的尺寸關(guān)鍵詞
flex-basis: fill;
flex-basis: max-content;
flex-basis: min-content;
flex-basis: fit-content;
在 flex item 內(nèi)容上的自動(dòng)尺寸
flex-basis: content;
全局?jǐn)?shù)值
flex-basis: inherit;
flex-basis: initial;
flex-basis: unset;
取值:
<'width'>
:width
值可以是<length>
; 該值也可以是一個(gè)相對(duì)于其父彈性盒容器主軸尺寸的百分?jǐn)?shù)
项戴。負(fù)值是不被允許的形帮。默認(rèn)為auto
槽惫。content
:基于 flex 的元素的內(nèi)容自動(dòng)調(diào)整大小。
由于最初規(guī)范中沒(méi)有包括這個(gè)值辩撑,在一些早期的瀏覽器實(shí)現(xiàn)的 flex 布局中界斜,content 值無(wú)效,可以利用設(shè)置width
或height
為auto
達(dá)到同樣的效果合冀。
示例:
.box{
flex-basis: 100px;
}
.box1{
flex-basis: max-content;
}
效果:?
?
屬性 flex-shrink
MDN:指定了 flex 元素的收縮規(guī)則各薇。flex 元素僅在默認(rèn)寬度之和大于容器的時(shí)候才會(huì)發(fā)生收縮,其收縮的大小是依據(jù) flex-shrink 的值君躺。負(fù)值是不被允許的峭判。默認(rèn)值 0。
自己的理解:原理同 屬性 flex-grow
相似棕叫。屬性 按比例 分配 溢出父元素的空間林螃。如果設(shè)置了屬性 flex-wrap
屬性值 wrap
,那么 flex-shrink
會(huì)失效俺泣。
語(yǔ)法:
flex-grow =
<number [0,∞]>
示例:未設(shè)置 flex-shrink
屬性疗认,且 子元素 共 超出 父元素 100px的寬度 空間。
.css
#content{
width: 500px;
padding: 0px;
border: 2px solid black;
align-items: center;
display: flex;
justify-content: space-around;
}
.box{
flex-basis: 120px;
}
效果:示例1:設(shè)置 .box 的 屬性 flex-shrink
屬性伏钠,添加如下代碼横漏。
.box{
flex-basis: 120px;
}
.box1{
flex-shrink: 1;
}
效果:代碼解析:
.box1 收縮了 全部 溢出的 寬度 100px 剩余 20px ,下面的紅色方塊就是 20px 的寬度熟掂。
?
?
屬性 align-self
用于 單獨(dú) 設(shè)置 彈性元素 (flex項(xiàng)) 在側(cè)軸(縱軸)方向上的對(duì)齊方式缎浇。
align-self
會(huì)對(duì)齊當(dāng)前 grid
或 flex
行中的元素,并覆蓋已有的 align-items
的值赴肚。
語(yǔ)法:
align-self =
auto |
normal |
stretch |
<baseline-position> |
<overflow-position>? <self-position>
<baseline-position> =
[ first | last ]? &&
baseline
<overflow-position> =
unsafe |
safe
<self-position> =
center |
start |
end |
self-start |
self-end |
flex-start |
flex-end
取值:
auto
:繼承 父元素的align-items
的 屬性值素跺。如果其沒(méi)有父元素,則值為stretch
尊蚁。center
:flex 元素會(huì)對(duì)齊到 cross-axis 的中間亡笑,如果該元素的 cross-size 尺寸大于 flex 容器,將在兩個(gè)方向均等溢出横朋。-
flex-start
:flex 元素會(huì)對(duì)齊到 cross-axis 的首端仑乌。專(zhuān)門(mén)為了彈性布局而開(kāi)發(fā)的屬性。-
start
:效果同flex-start
琴锭。 -
self-start
:效果同flex-start
晰甚。
-
-
flex-end
:flex 元素會(huì)對(duì)齊到 cross-axis 的尾端。專(zhuān)門(mén)為了彈性布局而開(kāi)發(fā)的屬性决帖。-
end
:效果同flex-end
厕九。 -
self-end
:效果同flex-end
。
-
stretch
:默認(rèn)值地回。元素被拉伸以適應(yīng)容器扁远,但同時(shí)會(huì)遵照min/max-width/height
屬性的限制俊鱼。-
baseline
:元素被定位到容器的基線。側(cè)軸起點(diǎn)到元素基線距離最大的元素將會(huì)于側(cè)軸起點(diǎn)對(duì)齊以確定基線畅买。first baseline
last baseline
示例1:設(shè)置 algin-self
屬性 為 center
.html
.css
#content{
width: 300px;
height: 50px;
padding: 0px;
border: 2px solid black;
display: flex;
}
.box{
flex-basis: 50px;
}
.box1{
align-self: center;
}
.box2{
height: 30px;
align-self: center;
}
.box3{
height: 70px;
align-self: center;
}
效果:代碼解析:
子元素 設(shè)置了align-self
屬性后并闲,元素不再填充滿(mǎn) 父元素。
示例2:flex-start
谷羞、start
帝火、self-start
.box1{
align-self: flex-start;
}
.box2{
align-self: self-start;
}
.box3{
align-self: start;
}
單行效果:換行效果:
示例3:flex-end
、end
湃缎、self-end
.box1{
align-self: flex-end;
}
.box2{
align-self: self-end;
}
.box3{
align-self: end;
}
效果:示例4:stretch
.box1{
align-self: stretch;
}
.box2{
height: 20px;
align-self: stretch;
}
.box3{
height: 70px;
align-self: stretch;
}
效果:示例5:basline
犀填、first baseline
、last baseline
.box1{
font-size: 10px;
align-self: baseline;
}
.box2{
font-size: 15px;
align-self: baseline;
}
.box3{
font-size: 20px;
align-self: baseline;
}
.box4{
font-size: 25px;
align-self: baseline;
}
.box5{
font-size: 30px;
align-self: baseline;
}
效果:代碼解析:
不同的flex項(xiàng) 設(shè)置不同的字體大小時(shí)嗓违,first baseline
|baseline
會(huì)在縱軸首端進(jìn)行基線的對(duì)齊九巡。
不同的flex項(xiàng) 設(shè)置不同的字體大小時(shí),lase baseline
會(huì)在縱軸尾端進(jìn)行基線的對(duì)齊蹂季。
不同的flex項(xiàng) 設(shè)置相同的字體大小時(shí)比庄,lase baseline
效果同flex-end
;first baseline
|baseline
效果同flex-start
乏盐。
?
?
屬性 align-items
用于 統(tǒng)一 設(shè)置 彈性元素 (flex項(xiàng)) 在側(cè)軸(縱軸、交叉軸)方向上的對(duì)齊方式制恍。
行排列父能。
語(yǔ)法,取值净神,示例 同 align-self
何吝。
屬性 align-content
當(dāng)交叉軸上有可用的空間,且容器內(nèi)有多行的項(xiàng)目時(shí)鹃唯,才可以對(duì)齊容器內(nèi)的各項(xiàng)(垂直)爱榕。
語(yǔ)法:
align-content =
normal |
<baseline-position> |
<content-distribution> |
<overflow-position>? <content-position>
<baseline-position> =
[ first | last ]? &&
baseline
<content-distribution> =
space-between |
space-around |
space-evenly |
stretch
<overflow-position> =
unsafe |
safe
<content-position> =
center |
start |
end |
flex-start |
flex-end
取值:
normal
:這些項(xiàng)按默認(rèn)位置填充,就像沒(méi)有設(shè)置對(duì)齊內(nèi)容值一樣坡慌。-
flex-start
:所有行從垂直軸起點(diǎn)開(kāi)始填充黔酥。剩余空間,全部堆砌到容器的下面洪橘。-
start
:同flex-start
跪者。
-
-
flex-end
:所有行從垂直軸終點(diǎn)開(kāi)始填充。剩余空間熄求,全部堆砌到容器的上面渣玲。-
end
:同flex-end
。
-
center
:所有行朝向容器的中心填充弟晚。剩余空間忘衍,全部平均的堆砌到容器的上面和下面逾苫。space-between
:所有行在容器中平均分布。相鄰兩行間距相等枚钓。容器的垂直軸起點(diǎn)邊和終點(diǎn)邊分別與第一行和最后一行的邊對(duì)齊铅搓。space-around
:所有行在容器中平均分布,相鄰兩行間距相等秘噪。容器的垂直軸起點(diǎn)邊和終點(diǎn)邊分別與第一行和最后一行的距離是相鄰兩行間距的一半狸吞。space-evenly
:所有行沿垂直軸均勻分布在對(duì)齊容器內(nèi)。stretch
:均勻分布項(xiàng)目指煎, 拉伸‘自動(dòng)’ - 大小的項(xiàng)目以充滿(mǎn)容器
示例1:flex-start
蹋偏、start
#content1{
flex-flow: row wrap;
// flex-flow: stretch; 默認(rèn)值
}
#content2{
flex-flow: row wrap;
align-content: flex-start;
}
#content3{
flex-flow: row wrap;
align-content: start;
}
效果:示例2:flex-end
、end
#content1{
flex-flow: row wrap;
// flex-flow: stretch; 默認(rèn)值
}
#content2{
flex-flow: row wrap;
align-content: flex-end;
}
#content3{
flex-flow: row wrap;
align-content: end;
}
效果:示例3:center
#content1{
flex-flow: row wrap;
// flex-flow: stretch; 默認(rèn)值
}
#content2{
flex-flow: row wrap;
align-content: center;
}
效果:示例4:space-between
至壤、space-around
威始、space-evenly
#content1{
flex-flow: row wrap;
align-content: space-between;
}
#content2{
flex-flow: row wrap;
align-content: space-around;
}
#content3{
flex-flow: row wrap;
align-content: space-evenly;
}
效果:
align-self
、align-items
像街、align-content
黎棠,
還有safe
、unsafe
镰绎、safe
脓斩、normal
等值,沒(méi)有研究出來(lái)畴栖,有懂的小伙伴可以在評(píng)論區(qū)分享一下随静。
?
?
屬性 justify-content
定義 順著彈性容器主軸 (或者網(wǎng)格行軸) ,如何分配元素之間及其周?chē)目臻g吗讶。
語(yǔ)法:
justify-content =
normal |
<content-distribution> |
<overflow-position>? [ <content-position> | left | right ]
<content-distribution> =
space-between |
space-around |
space-evenly |
stretch
<overflow-position> =
unsafe |
safe
<content-position> =
center |
start |
end |
flex-start |
flex-end
語(yǔ)法示例:
/* Positional alignment */
justify-content: center; /* 居中排列 */
justify-content: start; /* Pack items from the start */
justify-content: end; /* Pack items from the end */
justify-content: flex-start; /* 從行首起始位置開(kāi)始排列 */
justify-content: flex-end; /* 從行尾位置開(kāi)始排列 */
justify-content: left; /* Pack items from the left */
justify-content: right; /* Pack items from the right */
/* Baseline alignment */
justify-content: baseline;
justify-content: first baseline;
justify-content: last baseline;
/* Distributed alignment */
justify-content: space-between; /* 均勻排列每個(gè)元素
首個(gè)元素放置于起點(diǎn)燎猛,末尾元素放置于終點(diǎn) */
justify-content: space-around; /* 均勻排列每個(gè)元素
每個(gè)元素周?chē)峙湎嗤目臻g */
justify-content: space-evenly; /* 均勻排列每個(gè)元素
每個(gè)元素之間的間隔相等 */
justify-content: stretch; /* 均勻排列每個(gè)元素
'auto'-sized 的元素會(huì)被拉伸以適應(yīng)容器的大小 */
/* Overflow alignment */
justify-content: safe center;
justify-content: unsafe center;
/* Global values */
justify-content: inherit;
justify-content: initial;
justify-content: unset;
取值:
center
:元素向每行中點(diǎn)排列。-
flex-start
:從行首開(kāi)始排列照皆。-
start
: 從行首開(kāi)始排列重绷。
-
-
flex-end
:從行尾開(kāi)始排列。-
end
: 從行尾開(kāi)始排列膜毁。
-
stretch
:如果元素的組合尺寸小于對(duì)齊容器的尺寸昭卓,那么所有自動(dòng)設(shè)置大小的元素的尺寸都會(huì)等量(而不是按比例)增加,同時(shí)仍然遵守max-height/max-width的約束(或類(lèi)似的功能)瘟滨,這樣組合尺寸就會(huì)沿著主軸完全填充對(duì)齊容器葬凳。space-between
:均勻排列每個(gè)元素,首個(gè)元素放置于起點(diǎn)室奏,末尾元素放置于終點(diǎn)火焰。space-around
:均勻排列每個(gè)元素,每個(gè)元素周?chē)峙湎嗤目臻g胧沫。space-evenly
:均勻排列每個(gè)元素昌简,每個(gè)元素之間的間隔相等占业。
示例1:center
#content1{
flex-flow: row nowrap;
justify-content: center;
}
#content2{
flex-flow: row wrap;
justify-content: center;
}
效果:示例2:flex-start
、start
纯赎、left
#content1{
flex-flow: row nowrap;
justify-content: flex-start;
}
#content2{
flex-flow: row wrap;
justify-content: flex-start;
}
#content3{
flex-flow: row wrap;
justify-content: start;
}
效果:示例3:flex-end
键痛、end
冰抢、right
#content1{
flex-flow: row nowrap;
justify-content: flex-end;
}
#content2{
flex-flow: row wrap;
justify-content: flex-end;
}
#content3{
flex-flow: row wrap;
justify-content: end;
}
效果:示例4:stretch
#content1{
flex-flow: row nowrap;
justify-content: stretch;
}
#content2{
flex-flow: row wrap;
justify-content: stretch;
}
.box{
flex=basis: 60px;
}
.boxx{
flex=basis: 60px;
}
效果:在多行的容器內(nèi)凳谦,感覺(jué)沒(méi)啥效果驹尼。
示例5:space-between
#content1{
flex-flow: row nowrap;
justify-content: space-between;
}
#content2{
flex-flow: row wrap;
justify-content: space-between;
}
效果:示例6:space-around
、space-evenly
#content1{
flex-flow: row nowrap;
justify-content: space-around;
}
#content2{
flex-flow: row wrap;
justify-content: space-around;
}
效果:示例7:space-evenly
#content1{
flex-flow: row nowrap;
justify-content: space-evenly;
}
#content2{
flex-flow: row wrap;
justify-content: space-evenly;
}
效果:?
?
屬性 justify-items
晚顷、justify-self
justify-items
:為 所有 盒中的項(xiàng)目定義了默認(rèn)的 justify-self
峰伙,可以使這些項(xiàng)目以默認(rèn)方式沿 主軸線 對(duì)齊到每個(gè)盒子。
justify-self
:使 單個(gè) 盒中的項(xiàng)目 以默認(rèn)方式沿 主軸線 對(duì)齊到每個(gè)盒子该默。
該屬性的作用效果取決于我們使用的布局模式:
- 在塊級(jí)布局中瞳氓,會(huì)將其包含的項(xiàng)目在其行內(nèi)軸上對(duì)齊;
- 絕對(duì)定位的元素中栓袖,會(huì)將其包含的項(xiàng)目在其行內(nèi)軸上對(duì)齊匣摘,同時(shí)考慮 top、left裹刮、bottom音榜、right 的值;
- 表格單元中捧弃,該屬性被忽略囊咏;
- 彈性盒子布局中,該屬性被忽略塔橡;
- 柵格布局中,會(huì)將其柵格區(qū)域內(nèi)的項(xiàng)目在其行內(nèi)軸上對(duì)齊霜第;
?
?
flex項(xiàng)排序
:彈性盒子也有可以改變 flex 項(xiàng)的布局位置的功能葛家,而不會(huì)影響到源順序(即 dom 樹(shù)里元素的順序)。這也是傳統(tǒng)布局方式很難做到的一點(diǎn)泌类。
屬性 order
規(guī)定了彈性容器中的可伸縮項(xiàng)目在布局時(shí)的順序癞谒。元素按照 order 屬性的值的增序進(jìn)行布局。擁有相同 order 屬性值的元素按照它們?cè)谠创a中出現(xiàn)的順序進(jìn)行布局刃榨。
所有 flex 項(xiàng)默認(rèn)的 order
值是0
弹砚。
語(yǔ)法:
order =
<integer>
示例:
.item1{
order: 5;
}
.item2{
order: 4;
}
.item3{
order: 3;
}
.item4{
order: 2;
}
.item5{
order: 1;
}
效果:?
?
flex 嵌套
彈性盒子也能創(chuàng)建一些頗為復(fù)雜的布局。設(shè)置一個(gè)元素為 flex 項(xiàng)枢希,那么他同樣成為一個(gè) flex 容器桌吃,它的孩子(直接子節(jié)點(diǎn))也表現(xiàn)為彈性盒子。
示例:
參考嵌套彈性盒子
?
?
屬性值 flex
與inline-flex
的區(qū)別
-
flex
: 將對(duì)象作為彈性伸縮盒顯示苞轿。 -
inline-flex
:將對(duì)象作為內(nèi)聯(lián)塊級(jí)彈性伸縮盒顯示茅诱。
一句話(huà)來(lái)描述就是 當(dāng)Flex Box 容器沒(méi)有設(shè)置寬度大小限制時(shí)逗物,當(dāng)display
指定為 flex
時(shí),F(xiàn)lexBox 的寬度會(huì)填充父容器瑟俭,當(dāng)display
指定為 inline-flex
時(shí)翎卓,F(xiàn)lexBox的寬度會(huì)包裹flex Item。
inlein-flex
效果:
flex
效果: