對(duì)flexbox的學(xué)習(xí)總結(jié)筷笨,學(xué)習(xí)資源
文章是對(duì)自己點(diǎn)的以一些小結(jié)铅忿,主要是為了以后遺忘時(shí)可以回顧,若想學(xué)習(xí)揭措,前面的學(xué)習(xí)資源的教程相當(dāng)不錯(cuò)
- when we set display:flex for the parent container,
the child element will layout just like they have set
the prototy of float
HTML:
<ul>
<li>1 Branding</li>
<li>2 Home</li>
<li>3 Services</li>
<li>4 About</li>
<li>5 Contact</li>
</ul>
ul{
display: flex;
border:1px solid red;
list-style:none;
}
li{
height: 100px;
background-color: #8cacea;
margin: 8px;
padding: 4px;
}
- the property of flex container
property | illustration |
---|---|
flex-direction | 控制flex items的排列方向驯绎,值:row &clomn &row-reverse & clomn-reverse |
flex-wrap | 控制當(dāng)flex container無(wú)法容下flex item時(shí)是否換行完慧,值:wrap&nowrap&wrap-reverse |
flex-flow | flex-direction和flex-wrap屬性的縮寫 |
justify-content | 如同text-align控制,container中的items的排列方式剩失,就像文字排版的首部對(duì)其屈尼,尾部對(duì)齊一般,控制items在main-axis上的排列方式值:flex-start & flex-end ¢er & space-between & space-around |
align-items | 控制cross-axis方向上的的首個(gè)item的位置,從而影響整體布局赴叹,值:flex-start & flex-end & center&space-between & space-around |
align-content | 控制cross-axis方向上多個(gè)items的布局鸿染,與justify-content類似,值:flex-start & flex-end & center & stretch & baseline |
//test flex-direction
ul{
display: flex;
border:1px solid red;
list-style:none;
flex-direction:column;
}
li{
height: 100px;
background-color: #8cacea;
margin: 8px;
padding: 4px;
}
//test flex-wrap
ul{
display: flex;
border:1px solid red;
list-style:none;
flex-direction:column;
flex-wrap: wrap;
//wrap 當(dāng)container無(wú)法容下items是不會(huì)換行乞巧,瀏覽器會(huì)出現(xiàn)滾動(dòng)條
//nowrap 當(dāng)container無(wú)法容下items時(shí),自動(dòng)換行摊鸡,item依舊在container包裹的內(nèi)部
//wrap-reverse 在這設(shè)置了wrap的效果下將上下顛倒,reverse使得main-axis的方向從下到上
}
li{
height: 100px;
background-color: #8cacea;
margin: 8px;
padding: 4px;
}
//test justify-content
ul{
display: flex;
border:1px solid red;
list-style:none;
justify-content:flex-start;
//flex-start,從main-axis的左側(cè)排列對(duì)齊
//flex-end绽媒。從main-axis的右側(cè)排列對(duì)齊
//center.居中對(duì)齊
//space-between,item之間的距離大小大小相同
//sapce-around免猾。每個(gè)item占據(jù)的空間相同是辕,空間=元素所占空間+多出的空白空間的分配
}
li{
height: 100px;
background-color: #8cacea;
margin: 8px;
padding: 4px;
}
// test align-items
ul{
display: flex;
border:1px solid red;
list-style:none;
align-items:flex-start;
//flex-start,從cross-axis的左側(cè)排列對(duì)齊
//flex-end。從cross-axis的右側(cè)排列對(duì)齊
//center.cross-axis軸居中對(duì)齊
//stretch猎提,cross-axis軸,默認(rèn)值获三,使得flex items的高度與container的高度相同
//baseline。cross-axis軸锨苏,使得flex item按器基線對(duì)齊
}
li{
height: 100px;
background-color: #8cacea;
margin: 8px;
padding: 4px;
}
// test align-content
ul{
display: flex;
height:500px;
border:1px solid red;
list-style:none;
flex-wrap:wrap;
align-content:flex-start;
//與前面的justify-content顯示疙教,值也是相同的,達(dá)到的效果也是相同的伞租,
//需要理解的區(qū)別是贞谓,justify-content控制main-axis上的多個(gè)item,僅僅看一行
//align-content控制的是一列上的多個(gè)item,僅僅從一列上看葵诈,會(huì)發(fā)現(xiàn)其與justify-content幾乎相同
//相比align-items裸弦,align-items其控制的是cross-axis上第一個(gè)item的位置祟同,跟多的是針對(duì)首個(gè)item,
//而align-content更多針對(duì)的是多個(gè)item理疙,就如同justify-content一樣
}
li{
// height: 100px;
background-color: #8cacea;
margin: 8px;
padding: 4px;
height:100px;
}
//3.flex item property
property | illustration |
---|---|
order | 當(dāng)item設(shè)置了order之后晕城,會(huì)根據(jù)order值的大小進(jìn)行排列,如兩個(gè)元素的order值大小相同窖贤,則元素在html中排在前的會(huì)依舊排在前面广辰,item的某人order值為0 |
flex-grow | 當(dāng)container有多余空間時(shí),如flex-grow的值為正值則item會(huì)填滿多余的空間,當(dāng)多個(gè)item都設(shè)置了flex-grow時(shí)主之,會(huì)根據(jù)比例將多余的空間分配給item |
flex-shrink | 當(dāng)container的空間不足時(shí)择吊,會(huì)縮小item的大小,多個(gè)item都設(shè)置值時(shí)槽奕,根據(jù)比例縮小几睛。當(dāng)值為0時(shí),item則變成固定寬度粤攒,默認(rèn)值為1 |
flex-basis | item的基本寬度所森,默認(rèn)為auto |
//test order
ul{
display: flex;
height:500px;
border:1px solid red;
list-style:none;
flex-wrap:wrap;
}
li{
background-color: #8cacea;
margin: 8px;
padding: 4px;
height:100px;
}
li:nth-child(1){
order:1;
}
li:nth-child(2){
order:1;
}
//align-self,該屬性的是是針對(duì)目標(biāo)item進(jìn)行設(shè)定的夯接,不會(huì)影響到其他的item
property | illustration |
---|---|
auto | 繼承container的的align-items屬性 |
flex-start | 開(kāi)始對(duì)齊 |
flex-end | 結(jié)尾對(duì)齊 |
center | 居中 |
baseline | 基線 |
stretch | 延展焕济,會(huì)布滿整個(gè)container |
注意:但給某個(gè)item設(shè)置margin:auto的時(shí)候,
該項(xiàng)目會(huì)占據(jù)所有的多余空間,并將多余空間平均分配到該item的兩側(cè)盔几,
僅僅設(shè)置margin-left則將多余的空間都分配給該item的左側(cè)晴弃,margin-right相同
另外在設(shè)置了margin:auto之后。container的justify-content將不起作用