這篇文章給大家分享的是有關(guān)CSS3中Flexbox如何使用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)十余年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)營銷解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:成都茶藝設(shè)計(jì)等企業(yè),備受客戶好評。
Flexbox 是一個(gè) CSS3 的盒子模型 ( box model ),顧名思義它就是一個(gè)靈活的盒子 ( Flexible Box ),為什麼最近這個(gè)屬性才紅起來呢?最主要也是因?yàn)?CSS3 的規(guī)范終于普及 ( 或 IE 終于敗亡 ),加上行動(dòng)裝置的發(fā)展促成了響應(yīng)式布局興起,自適應(yīng)長寬彈性相當(dāng)大的 Flexbox 就趁勢而起了。
第一步要來看 Flexbox 的盒子模型,根據(jù) W3C 文章所描述,flex 的盒子模型如下圖所呈現(xiàn),與一般的盒子模型不同的地方,在于 Flexbox 的盒子模型具有水平的起點(diǎn)與終點(diǎn) ( main start、main end ),垂直的起點(diǎn)與終點(diǎn) ( cross start、cross end ),水平軸與垂直軸 ( main axis、cross axis ),然后元素具有水平尺寸與垂直尺寸 ( main size、cross size ),這些都是相當(dāng)重要的布局規(guī)畫。
再來我們先看看 Flexbox 有哪些屬性,也可參考MDN的使用 CSS 彈性盒子
display
flex-direction
justify-content
align-items
align-self
align-content
flex-wrap
order
flex
display 是我們熟知的 CSS 屬性,對于 Flexbox 來說,多了有兩種方式可以設(shè)定,預(yù)設(shè)為「flex」,其布局方式與 block 幾乎類似,都會(huì)強(qiáng)迫換行,但設(shè)定display:flex的子元素卻具備了更多彈性的設(shè)定。
此外另外一種方式則是「inline-flex」,和 inline-block 也是幾乎雷同,意義上都是一個(gè)display:flex的元素外面包覆display:inline的屬性,在后方的元素不會(huì)換行。
這樣做將元素定義為彈性容器,其子元素則成為彈性項(xiàng)目。值 flex 使彈性容器成為塊級元素。值 inline-flex 使彈性容器成為單個(gè)不可分的行內(nèi)級元素。
flex-direction 表示 Flexbox 內(nèi)容元素的「排列方向」,分別有下列四種。
row:預(yù)設(shè)值,由左到右,從上到下
row-reverse:與 row 相反
column:從上到下,再由左到右
column-reverse:與 column 相反
justify-content 決定了內(nèi)容元素與整個(gè) Flexbox 的「水平對齊」位置,回想一下最上面講的 Flexbox 盒子模型,具有 main start 與 main end 左右兩個(gè)端點(diǎn),justify-content 就是按照這個(gè)方式做設(shè)定,而其中的設(shè)定值總共有下列五個(gè)。
flex-start:預(yù)設(shè)值,對齊最左邊的 main start
flex-end:對齊最左邊的 main end
center:水平置中
space-between:平均分配內(nèi)容元素,左右元素將會(huì)與 main start 和 main end 貼齊
space-around:平均分配內(nèi)容元素,間距也是平均分配
align-items 剛好和 justify-content 相反,align-items 決定了內(nèi)容元素與整個(gè) Flexbox 的「垂直對齊」位置,再回想一下最上面講的 Flexbox 盒子模型,具有 cross start 與 cross end 左右兩個(gè)端點(diǎn),align-items 與 align-self 就是按照這個(gè)方式做設(shè)定,設(shè)定值總共有下列五個(gè)。
flex-start:預(yù)設(shè)值,對齊最上面的 cross start
flex-end:對齊最下面的 cross end
center:垂直置中
stretch:將內(nèi)容元素全部撐開至 Flexbox 的高度
baseline:以所有內(nèi)容元素的基線作為對齊標(biāo)準(zhǔn)
align-self 的設(shè)定與 align-items 相同,但目的不同,align-self 的作用在于覆寫已經(jīng)套用 align-items 的屬性,如果照我們以前所寫,因?yàn)?align-items 是針對子元素,所以必須要用 align-self 來進(jìn)行覆寫,我們直接用上一個(gè)范例來修改就很清楚了。
auto
設(shè)置為父元素的 align-items 值,如果該元素沒有父元素的話,就設(shè)置為 stretch。
flex-start
flex 元素會(huì)對齊到 cross-axis 的首端。
flex-end
flex 元素會(huì)對齊到 cross-axis 的尾端。
center
flex 元素會(huì)對齊到 cross-axis 的中間,如果該元素的 cross-size 的尺寸大于 flex 容器,將在兩個(gè)方向均等溢出。
baseline
所有的 flex 元素會(huì)沿著基線對齊。
stretch
flex 元素將會(huì)基于容器的寬和高,按照自身 margin box 的 cross-size 拉伸。
剛剛談到的 align-items 是針對內(nèi)容為單行的元素進(jìn)行處理,如果遇到多行的元素,就要使用 align-content 這個(gè)屬性,這個(gè)屬性總共有六個(gè)設(shè)定值。( 范例:css-flexbox-demo6.html、W3C 說明 )
flex-start:預(yù)設(shè)值,對齊最上面的 cross start
flex-end:對齊最下面的 cross end
center:垂直置中
space-between:將第一行與最后一行分別對齊最上方與最下方
space-around:每行平均分配間距
stretch:內(nèi)容元素全部撐開
在剛剛的范例看到一個(gè) flex-wrap 的屬性,這個(gè)屬性負(fù)責(zé)的是讓內(nèi)容的元素?fù)Q行,因?yàn)楫?dāng)我們把父元素的 display 設(shè)定為 flex 或 inline-flex 的時(shí)候,子元素就是以單行的方式,彈性撐滿父元素,所以就要利用 flex-wrap 來換行,共有三個(gè)設(shè)定值。( 范例:css-flexbox-demo7.html)
nowrap:預(yù)設(shè)值,單行
wrap:多行
wrap-reverse:多行,但內(nèi)容元素反轉(zhuǎn)
剛剛在 flex-wrap 的屬性里頭看到了可以把元素反轉(zhuǎn),order 這個(gè)屬性更是可以直接指定一個(gè)數(shù)字,就可以由小到大的排列順序
好酒沉甕底,有耐心看到下面的才會(huì)看到重點(diǎn)喔哈哈!flex 應(yīng)該是 Flexbox 里頭最重要的屬性了,而 flex 其實(shí)是由三個(gè)屬性組合而成,依照先后順序分別是「flex-grow」、「flex-shrink」和「flex-basis」,如果 flex 只填了一個(gè)數(shù)值 ( 無單位 ),那麼預(yù)設(shè)就是以 flex-grow 的方式呈現(xiàn),至于三個(gè)屬性的解釋如下:
flex-grow:數(shù)字,無單位,當(dāng)子元素的 flex-basis 長度「小」于它自己在父元素分配到的長度,按照數(shù)字做相對應(yīng)的「伸展」比例分配,預(yù)設(shè)值為 1,設(shè)為 0 的話不會(huì)進(jìn)行彈性變化,不可為負(fù)值。
flex-shrink:數(shù)字,無單位,當(dāng)子元素的 flex-basis 長度「大」于它自己在父元素分配到的長度,按照數(shù)字做相對應(yīng)的「壓縮」比例分配,預(yù)設(shè)值為 1,設(shè)為 0 的話不會(huì)進(jìn)行彈性變化,不可為負(fù)值。
flex-basis:子元素的基本大小,作為父元素的大小比較基準(zhǔn),預(yù)設(shè)值為 0,也因?yàn)轭A(yù)設(shè)值為 0,所以沒有設(shè)定此屬性的時(shí)候,會(huì)以直接採用 flex-grow 屬性,flex-basis 也可以設(shè)為 auto,如果設(shè)為 auto,就表示子元素以自己的基本大小為單位。。
三個(gè)屬性可以分開設(shè)定,也可以合在一起用一個(gè) flex 統(tǒng)一設(shè)定,下面的例子展現(xiàn)出同一個(gè) Flexbox,在不同的寬度,子元素會(huì)有不同大小的呈現(xiàn)。
HTML代碼:
CSS代碼:
如果用動(dòng)畫來表現(xiàn),可以看出拉長的時(shí)候紅色會(huì)變得比藍(lán)色長,但壓縮的時(shí)候卻是藍(lán)色變得比紅色長,如此一來就更能體會(huì) flex 在響應(yīng)式設(shè)計(jì)里頭的關(guān)鍵腳色蘿!
感謝各位的閱讀!關(guān)于CSS3中Flexbox如何使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
本文題目:CSS3中Flexbox如何使用
當(dāng)前地址:http://www.rwnh.cn/article14/gopege.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、、網(wǎng)站排名、微信公眾號(hào)、網(wǎng)站導(dǎo)航、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)