前端知識梳理-3/CSS3動畫/flex布局

Flex 布局

//也稱為彈性布局,是為了適應(yīng)不同的屏幕尺寸和不同的設(shè)備類型二提出的一種布局方式。

基本概念

上圖是一個橫向的,文本流從左到右的彈性布局圖示。這里有幾個概念

  • 彈性容器(Flex container), 指一個聲明為 flex 或者 inline-flex 的元素,是所有 Flex items 的父元素。
  • 彈性項目(Flex item), 指 flex 容器內(nèi)的直接孩子元素;彈性容器中的直接文本項默認(rèn)為匿名彈性項目。
  • 主軸(main axis)和側(cè)軸(cross axis), 類似于二維中的 X 軸和 Y 軸,主軸由屬性 flex-direction 來定義,與主軸垂直的軸則是側(cè)軸。

定義彈性布局

要使用彈性布局,需要定義一個彈性容器(Flex container),通過聲明 display 屬性為 flex 或者 inline-flex 來將此元素定義為彈性容器。

<figure class="highlight css" style="display: block; margin: 20px 0px; overflow: auto; padding: 15px; font-size: 13px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; font-family: lato, "pingfang sc", "microsoft yahei", sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;">

|

<pre style="overflow: auto; font-family: consolas, Menlo, "pingfang sc", "microsoft yahei", monospace; font-size: 13px; margin: 0px; padding: 1px 20px 1px 1px; color: rgb(102, 102, 102); background: rgb(247, 247, 247); line-height: 1.6; border: 0px; text-align: right;">1
2
3
</pre>

|

<pre style="overflow: auto; font-family: consolas, Menlo, "pingfang sc", "microsoft yahei", monospace; font-size: 13px; margin: 0px; padding: 1px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: 0px;">.flex {
display: flex
}
</pre>

|

</figure>

彈性容器的屬性

  • flex-direction 定義排列的方向
    • row 默認(rèn)值,主軸為水平,從左向右排列
    • row-reverse 主軸為水平,從右向左排列
    • column 主軸為垂直方向,從上向下排列
    • column-reverse 主軸為垂直方向,從下向上排列
  • flex-wrap 定義是否新行顯示,以及新行的排列方向
    • nowrap 默認(rèn)值,顯示在同一行,不換行
    • wrap 一行顯示不了時使用新行顯示
    • wrap-reversewrap,但是從下向上顯示
  • flex-flowflex-directionflex-wrap 的簡寫方式
    • 使用方法 flex-flow: <‘flex-direction’> || <‘flex-wrap’>
    • 默認(rèn)值為: row nowrap
  • justify-content 定義彈性項目在主軸上的對齊方式
    • flex-start 默認(rèn)值,從起始位置對齊,通常為左對齊
    • flex-end 從結(jié)束位置對齊,通常為右對齊
    • center 居中對齊
    • space-between 兩端對齊,平均間隔
    • space-around 每個子元素都有相等的外邊距,相鄰元素外邊距不會疊加
  • align-items 定義彈性項目在側(cè)軸上的對齊方式
    • stretch 默認(rèn)值,彈性項目在沒指定高度或者高度為 auto 的情況下,則高度會占滿空間
    • flex-start 側(cè)軸起點(diǎn)開始對齊
    • flex-end 從側(cè)軸結(jié)束位置對齊
    • center 相對側(cè)軸居中對齊
    • baseline 與基線對齊
  • align-content 定義多行在側(cè)軸的對齊方式,當(dāng)只有一行時,不起作用
    • stretch 默認(rèn)值,各行會伸展以占滿整個縱軸空間
    • flex-start 對齊到縱軸起點(diǎn)
    • flex-end 對齊到縱軸終點(diǎn)
    • center 相對縱軸中間對齊
    • space-between 各行相對縱軸兩端對齊,各行間隔相等
    • space-around 各行都有相等的外邊距,各行的外邊距不會疊加

彈性項目的屬性

  • flex-grow 數(shù)字,定義彈性項目的放大比例,默認(rèn) 0
  • flex-shrink 數(shù)字,定義彈性項目的縮小比例,默認(rèn) 1,值 0 表示不縮小
  • flex-basis 數(shù)字,定義彈性項目的默認(rèn)尺寸,
  • flexflex-grow flex-shrink flex-basis 的縮寫,默認(rèn)值為 0 1 auto
  • align-self 定義此彈性項目本身的對齊方式,會覆蓋彈性容器 align-items 定義的對齊方式
    • auto 從彈性容器繼承
    • stretch 彈性項目在沒指定高度或者高度為 auto 的情況下,則高度會占滿空間
    • flex-start 側(cè)軸起點(diǎn)開始對齊
    • flex-end 從側(cè)軸結(jié)束位置對齊
    • center 相對側(cè)軸居中對齊
    • baseline 與基線對齊
  • order 數(shù)字,定義彈性項目的顯示順序,數(shù)字越小越靠前

CSS3動畫

https://segmentfault.com/a/1190000006699023

阮一峰flex布局

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

通關(guān)小游戲你就等于學(xué)會flex啦~

http://flexboxfroggy.com/#zh-cn
http://www.flexboxdefense.com/

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

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

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