css-flex布局

1.flex布局的兼容性寫法

關(guān)于flex布局的兼容性,參考flex兼容性

.flex{

????display:-webkit-box;

? ? display: -moz-box;

? ? display: -ms-flexbox;

? ? display: -webkit-flex;

? ? display: flex;

}

flex布局中有兩波屬性,一波作用在flex盒子上,一波作用在flex盒子內(nèi)部的元素(也叫項(xiàng)目)上

設(shè)為 Flex 布局以后,子元素的float、clear和vertical-align屬性將失效。

2.作用在flex盒子上的屬性

?flex-direction????row | row-reverse | column | column-reverse

?flex-wrap?????????nowrap| wrap|wrap-reverse

?flex-flow?????????rownowrap

?justify-content???center|space-between|space-around|flex-start|flex-end

?align-items???????center|baseline|stretch|flex-start|flex-end

?align-content?????center|space-between|space-around|flex-start|flex-end|stretch

2.1 flex-direction????row | row-reverse | column |column-reverse

該屬性定義主軸的方向,即項(xiàng)目的排列方向,容器的屬性中有的是主軸方向的屬性,有的是交叉軸方向的屬性,合理的定義主軸的方向可以更好的布局。

row:默認(rèn)屬性,主軸為水平方向,起點(diǎn)在左端? ?;row-reverse:主軸為水平方向,起點(diǎn)在右端


flex-direction:row


flex-direction:row-reverse

column:主軸為垂直方向,起點(diǎn)在上方? ?;column-reverse:主軸為垂直方向,起點(diǎn)在下方


flex-direction:column(左)? ? ??flex-direction:column-reverse(右)

2.2? flex-wrap?????????nowrap| wrap|wrap-reverse

該屬性決定容器內(nèi)的項(xiàng)目排列是否換行,怎么換行

nowrap:默認(rèn)屬性,不換行


flex-wrap : nowrap

wrap:正常換行

flex-wrap : wrap

wrap-reverse:第一行在下面


flex-wrap : wrap-reverse

2.3flex-flow?

是前兩個(gè)屬性的綜合,第一個(gè)參數(shù)是flex-direction,第二個(gè)屬性是flex-wrap,兩個(gè)屬性的取值任意組合,默認(rèn)是row nowrap,用集合表示為

?A={row,row-reverse , column ,column-reverse }

?B={nowrap,wrap,wrap-reverse }

flex-flow:[a ] [b],其中a屬于集合A,b屬于集合B

2.4justify-content? ?

center|space-between|space-around|space-evenly|flex-start|flex-end

定義主軸方向上的對(duì)齊方式

center:在主軸方向上居中


justify-content? : center

space-between:第一個(gè)和最后一個(gè)項(xiàng)目抵邊。各個(gè)項(xiàng)目之前的間距平分剩余空間,即將主軸的剩余空間等分成 n-1(n是項(xiàng)目的個(gè)數(shù))份,每兩個(gè)項(xiàng)目之間的間距都占一份


justify-content? : space-between


space-around:各個(gè)項(xiàng)目之前的間距是首尾兩個(gè)項(xiàng)目與邊緣間距的2倍,即將主軸的剩余空間等分成2n(n是項(xiàng)目的個(gè)數(shù))份,每個(gè)項(xiàng)目的兩邊都占一份,也就是說兩個(gè)項(xiàng)目的間距是2分,項(xiàng)目距離兩個(gè)端的距離是1份


justify-content? : space-around

space-evenly:容器邊緣到項(xiàng)目的間距與兩個(gè)項(xiàng)目之間的間距相等(瀏覽器支持較差),即將主軸的剩余空間等分成 n+1(n是項(xiàng)目的個(gè)數(shù))份,兩個(gè)項(xiàng)目之間以及項(xiàng)目到端點(diǎn)的距離都是1份

justify-content? :space-evenly

flex-start:默認(rèn)屬性,與主軸開始的位置對(duì)齊


justify-content? :?flex-start

flex-end:與主軸的末端對(duì)齊


justify-content? :??flex-end

舉個(gè)栗子,做項(xiàng)目的過程中遇到一個(gè)首頁展示三個(gè)欄目的情況,這三個(gè)欄目整體居中,中間有間隔


我的栗子

2.5 align-items

center|baseline|stretch|flex-start|flex-end

定義交叉軸方向上的對(duì)齊方式

center:在交叉軸方向上居中排列


align-items: center

baseline:項(xiàng)目的第一行文字對(duì)齊


align-items?: baseline

stretch:如果項(xiàng)目沒有設(shè)置高度就會(huì)在交叉軸上占滿整個(gè)容器


align-items?:?stretch

flex-start:交叉軸的起始位置對(duì)齊

flex-end:交叉軸的末端對(duì)齊

舉個(gè)主軸交叉軸都對(duì)齊的栗子


align-items?: center;justify-content? ? ? :center

2.6 align-content

?center|space-between|space-around|space-evenly|flex-start|flex-end?

定義多條軸線的對(duì)齊方式

center:在交叉軸方向上居中


align-content:center

space-between:第一個(gè)和最后一個(gè)項(xiàng)目抵邊。各個(gè)項(xiàng)目之前的間距平分剩余空間


align-content:space-between

space-around:各個(gè)項(xiàng)目之前的間距是首尾兩個(gè)項(xiàng)目與邊緣間距的2倍


align-content:?space-around

space-evenly:容器邊緣到項(xiàng)目的間距與兩個(gè)項(xiàng)目之間的間距相等(瀏覽器支持較差)


align-content:?space-?evenly

flex-start:默認(rèn)屬性,與交叉軸開始的位置對(duì)齊


align-content:flex-start

flex-end:與交叉軸的末端對(duì)齊


align-content:flex-end

3.項(xiàng)目的屬性

?order:項(xiàng)目的排列順序,默認(rèn)0,數(shù)字越小排列越靠前


?flex-grow:項(xiàng)目的放大比例,默認(rèn)為0,即使有剩余空間也不放大,第一個(gè)項(xiàng)目的flex-grow為1,有剩余空間時(shí)第一個(gè)項(xiàng)目占滿剩余空間,如圖1所示,此時(shí)無論第一的項(xiàng)目的flex-grow的值為多少,第一個(gè)項(xiàng)目所占的空間都是容器剩余空間的大??;如果第一個(gè)項(xiàng)目的flex-grow為2,其他的為1,那么在有剩余空間時(shí),所有的項(xiàng)目都會(huì)被放大,同時(shí)第一個(gè)項(xiàng)目的空間是其他項(xiàng)目所占空間的2倍,如圖2所示

圖1


圖2

?flex-shrink:項(xiàng)目的縮小比例,默認(rèn)為1,為0時(shí)不縮小,將第一個(gè)項(xiàng)目的flex-shrink屬性值設(shè)為0 ,會(huì)發(fā)現(xiàn)在瀏覽器窗口縮小的過程中其他項(xiàng)目等比例縮小,只有第一個(gè)項(xiàng)目保持不變,如圖3


圖3

?flex-basis:項(xiàng)目占據(jù)主軸的空間,默認(rèn)為auto,項(xiàng)目原本的大小,可以是一個(gè)100px這樣類似于寬度的值

?flex:前面三個(gè)的簡寫,默認(rèn)0 1 auto

?align-self?:項(xiàng)目自己在交叉軸方向的對(duì)齊方式,屬性有center|baseline|stretch|flex-start|flex-end,基本用法與align-items相同


骰子布局
上述布局的樣式

4.小結(jié)

目前市場上大部分主流瀏覽器對(duì)flex的支持還是蠻好的,但是總會(huì)有些例外,具體問題具體分析??傊饔?。

最后編輯于
?著作權(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)容

  • Flex布局是Css3中新加入的額外布局系統(tǒng)。傳統(tǒng)布局基于盒模型,依賴“display”、“position”、“...
    饑人谷_Pizza閱讀 2,464評(píng)論 0 2
  • (1)兼容性 Chrome 21+Opera 12.1+Firefox 22+Safari 6.1+IE 10+ ...
    何幻閱讀 605評(píng)論 0 1
  • 移動(dòng)開發(fā)基本知識(shí)點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,734評(píng)論 0 6
  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,833評(píng)論 0 26
  • 今天一大早還沒起床,就接到媽媽打來的電話,特別甜膩的祝我生日快樂,突然想起來哦!生日了。。。其實(shí)我的生日不容易忘的...
    凌小魚閱讀 1,288評(píng)論 0 0

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