flex是一個(gè)靈活性強(qiáng)的布局方式,它能夠很好的控制內(nèi)部元素的寬度,高度或者剩余的空間部分,來(lái)適應(yīng)不同的顯示設(shè)備和不同的屏幕尺寸,而真正達(dá)到一種自適應(yīng)效果.
在城關(guān)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,城關(guān)網(wǎng)站建設(shè)費(fèi)用合理。
flex布局與常規(guī)布局截然不同,常規(guī)布局雖然在頁(yè)面上顯示很好,但對(duì)于大而復(fù)雜的項(xiàng)目,在方向改變,自適應(yīng)大小,伸展和收縮等方面缺乏靈活性,flex最適合作為應(yīng)用程序的組件,小規(guī)模布局使用;網(wǎng)格布局適用大規(guī)模布局.
flex整個(gè)模塊不只是一個(gè)屬性,它涉及很多東西以及一系列屬性.設(shè)置為flex標(biāo)簽的被稱(chēng)為flex容器,而這個(gè)容器內(nèi)的子節(jié)點(diǎn)元素稱(chēng)為flex項(xiàng).
如果常規(guī)布局是基于塊和內(nèi)聯(lián)布局的話,flex可以稱(chēng)為flex流方向布局
我們來(lái)看看下面這個(gè)圖例,來(lái)解釋flex布局的相關(guān)思想
我們先來(lái)看整個(gè)盒子,盒子里有兩個(gè)元素1,2;這時(shí)候我們還未對(duì)其做flex定義,也就沒(méi)有其他的術(shù)語(yǔ)來(lái)定義盒子中的元素.
現(xiàn)在我們把盒子定義為flex,這時(shí)候看兩個(gè)條紅色方向線條,
main-axis:橫向稱(chēng)為主軸,
cross axis:縱向相對(duì)于主軸來(lái)說(shuō),稱(chēng)為交叉軸,
1,2 兩個(gè)子盒子:稱(chēng)為為flex項(xiàng).
這里我們繼續(xù)看下,藍(lán)色的部分main start,main end,cross start,cross end是布局(主軸,交叉軸)方向的開(kāi)始,結(jié)束位置.
main start:主軸布局開(kāi)始位置
main end:主軸布局結(jié)束位置
cross start:交叉軸布局開(kāi)始位置
cross end :交叉軸布局結(jié)束位置
main size:flex項(xiàng)在主軸布局上的大小
cross size:flex項(xiàng)在交叉軸布局上的大小
下面我們來(lái)看下容器和flex項(xiàng)的主要屬性,以及他們的作用.
我們先來(lái)了解容器的相關(guān)屬性,及作用.下面這個(gè)圖,我們定義一個(gè)flex容器.
display:flex /*inline-flex*/
定義容器為flex布局,塊狀還是內(nèi)聯(lián)取決于屬性值,flex為塊狀,inline-flex為內(nèi)聯(lián)
flex-direction:row | row-reverse | column | column-reverse;
row :這個(gè)是默認(rèn)值,從左至右的布局
row-reverse:從右至左的布局
column :從上到下
column-reverse:從下到上
從圖來(lái)看是一種流的方式,默認(rèn)是將flex項(xiàng)盡量放置在一行上.當(dāng)然我們也可以改變和根據(jù)需要來(lái)設(shè)置屬性.
flex-wrap:nowrap | wrap | wrap-reverse;
nowrap:默認(rèn)值,單行模式,從左至右
wrap:多行模式(換行)從左至右
wrap-reverse:多行(換行)模式,從右至左.
flex-flow: <‘flex-direction’> || <‘flex-wrap’>
這個(gè)屬性是flex-direction和flex-wrap的合并寫(xiě)法,屬性默認(rèn)值為 row nowrap
設(shè)定flex項(xiàng)沿著主軸對(duì)齊.控制flex項(xiàng)之間的多余空間.
justify-content: flex-start | flex-end | center | space-between | space-around;
flext-start:默認(rèn)值,左對(duì)齊
flex-end:右對(duì)齊
center:居中
space-between:兩端對(duì)齊
space-around:兩邊f(xié)lex項(xiàng)與容器的邊緣距離相等,但每個(gè)項(xiàng)之間的距離是邊緣距離的兩倍,每個(gè)項(xiàng)之間的距離相等
設(shè)定flex項(xiàng)交叉軸上的對(duì)齊方式.相對(duì)于justify-content的布局方式
align-items: flex-start | flex-end | center | baseline | stretch;
flex-start:對(duì)齊交叉軸的開(kāi)始位置
flex-end:對(duì)齊交叉軸的結(jié)束位置
center:對(duì)齊交叉軸上的中間位置
baseline:基線對(duì)齊方式
stretch :默認(rèn)值,填充整個(gè)容器(但仍然依循min-width/max-width)
相對(duì)于交叉軸上的對(duì)齊方式,類(lèi)似于主軸上的對(duì)齊方式justify-content. 如果容器里只有一條軸上的項(xiàng),那屬性不起作用.
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
flex-start:基于交叉軸開(kāi)始位置對(duì)齊
flex-end:基于交叉軸結(jié)束位置對(duì)齊
center:基于交叉軸中間對(duì)齊
space-between:交叉軸兩端對(duì)齊
space-around:每個(gè)項(xiàng)在交叉軸的距離相等
stretch: 默認(rèn)值,項(xiàng)占滿(mǎn)容器交叉軸
主容器里的屬性,我們了解完后,繼續(xù)看flex項(xiàng)的屬性及作用.
order:
;
默認(rèn)情況下,flex項(xiàng)按照先后順序布局.order 用來(lái)控制flex項(xiàng)在容器中的順序.
該屬性為每項(xiàng)增加了伸張能力,它的值接受一個(gè)無(wú)單位的數(shù)字值,作為比例.規(guī)定某各項(xiàng)需占用的比例空間. 如果所有項(xiàng)的flex-grow值為1,則它們將平分剩余空間(如果有的話)。如果一個(gè)項(xiàng)的flex-grow值為2,其他每項(xiàng)值都為1,值為2的項(xiàng)占據(jù)的剩余空間將比其他項(xiàng)多一倍。
flex-grow:
; /* default 0 */
默認(rèn)值是0,值為0的時(shí)候,每項(xiàng)的占用空間不變(原始大小).屬性值,負(fù)數(shù)無(wú)效.
屬性為每項(xiàng)增加了收縮能力.類(lèi)似flex-grow,屬性值,負(fù)數(shù)無(wú)效
flex-shrink:; /* default 1 */
在分配剩余空間之前,定義元素的默認(rèn)大小.值可以是一個(gè)長(zhǎng)度,例如30%,5rem,等等,或者一個(gè)關(guān)鍵詞.值為auto,看起來(lái)像"width或者h(yuǎn)eight的值auto"
flex-basis:
| auto; /* default auto */
如果設(shè)置為0,圍繞內(nèi)容的額外空間不考慮在內(nèi).如果值為auto,額外空間基于flex-grow值來(lái)分配.
這個(gè)是flex-grow,flex-shrink和flex-basis的合并寫(xiě)法.這第二個(gè)和第三個(gè)的參數(shù)是可選值.默認(rèn)值是: 0 1 auto
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
推薦使用這個(gè)合并寫(xiě)法.
單獨(dú)設(shè)置flex項(xiàng)在容器里的布局位置.
http://weahome.cn/article/gohpoc.html