溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS3中Flexbox如何使用

發(fā)布時間:2020-09-23 13:02:04 來源:億速云 閱讀:126 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關CSS3中Flexbox如何使用的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

一、前言

Flexbox 是一個 CSS3 的盒子模型 ( box model ),顧名思義它就是一個靈活的盒子 ( Flexible Box ),為什麼最近這個屬性才紅起來呢?最主要也是因為 CSS3 的規(guī)范終于普及 ( 或 IE 終于敗亡 ),加上行動裝置的發(fā)展促成了響應式布局興起,自適應長寬彈性相當大的 Flexbox 就趁勢而起了。

第一步要來看 Flexbox 的盒子模型,根據 W3C 文章所描述,flex 的盒子模型如下圖所呈現,與一般的盒子模型不同的地方,在于 Flexbox 的盒子模型具有水平的起點與終點 ( main start、main end ),垂直的起點與終點 ( cross start、cross end ),水平軸與垂直軸 ( main axis、cross axis ),然后元素具有水平尺寸與垂直尺寸 ( main size、cross size ),這些都是相當重要的布局規(guī)畫。

CSS3中Flexbox如何使用

再來我們先看看 Flexbox 有哪些屬性,也可參考MDN的使用 CSS 彈性盒子

  • display

  • flex-direction

  • justify-content

  • align-items

  • align-self

  • align-content

  • flex-wrap

  • order

  • flex

二、屬性介紹

A、display

display 是我們熟知的 CSS 屬性,對于 Flexbox 來說,多了有兩種方式可以設定,預設為「flex」,其布局方式與 block 幾乎類似,都會強迫換行,但設定display:flex的子元素卻具備了更多彈性的設定。

此外另外一種方式則是「inline-flex」,和 inline-block 也是幾乎雷同,意義上都是一個display:flex的元素外面包覆display:inline的屬性,在后方的元素不會換行。

這樣做將元素定義為彈性容器,其子元素則成為彈性項目。值 flex 使彈性容器成為塊級元素。值 inline-flex 使彈性容器成為單個不可分的行內級元素。

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

B、flex-direction

flex-direction 表示 Flexbox 內容元素的「排列方向」,分別有下列四種。

  • row:預設值,由左到右,從上到下

  • row-reverse:與 row 相反

  • column:從上到下,再由左到右

  • column-reverse:與 column 相反

CSS3中Flexbox如何使用
CSS3中Flexbox如何使用

C、justify-content

justify-content 決定了內容元素與整個 Flexbox 的「水平對齊」位置,回想一下最上面講的 Flexbox 盒子模型,具有 main start 與 main end 左右兩個端點,justify-content 就是按照這個方式做設定,而其中的設定值總共有下列五個。

  • flex-start:預設值,對齊最左邊的 main start

  • flex-end:對齊最左邊的 main end

  • center:水平置中

  • space-between:平均分配內容元素,左右元素將會與 main start 和 main end 貼齊

  • space-around:平均分配內容元素,間距也是平均分配

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

D、align-items

align-items 剛好和 justify-content 相反,align-items 決定了內容元素與整個 Flexbox 的「垂直對齊」位置,再回想一下最上面講的 Flexbox 盒子模型,具有 cross start 與 cross end 左右兩個端點,align-items 與 align-self 就是按照這個方式做設定,設定值總共有下列五個。

  • flex-start:預設值,對齊最上面的 cross start

  • flex-end:對齊最下面的 cross end

  • center:垂直置中

  • stretch:將內容元素全部撐開至 Flexbox 的高度

  • baseline:以所有內容元素的基線作為對齊標準

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

E、align-self

align-self 的設定與 align-items 相同,但目的不同,align-self 的作用在于覆寫已經套用 align-items 的屬性,如果照我們以前所寫,因為 align-items 是針對子元素,所以必須要用 align-self 來進行覆寫,我們直接用上一個范例來修改就很清楚了。

  • auto

設置為父元素的 align-items 值,如果該元素沒有父元素的話,就設置為 stretch。

  • flex-start

flex 元素會對齊到 cross-axis 的首端。

CSS3中Flexbox如何使用

  • flex-end
    flex 元素會對齊到 cross-axis 的尾端。

CSS3中Flexbox如何使用

  • center
    flex 元素會對齊到 cross-axis 的中間,如果該元素的 cross-size 的尺寸大于 flex 容器,將在兩個方向均等溢出。

CSS3中Flexbox如何使用

  • baseline
    所有的 flex 元素會沿著基線對齊。

CSS3中Flexbox如何使用

  • stretch
    flex 元素將會基于容器的寬和高,按照自身 margin box 的 cross-size 拉伸。

CSS3中Flexbox如何使用

F、align-content

剛剛談到的 align-items 是針對內容為單行的元素進行處理,如果遇到多行的元素,就要使用 align-content 這個屬性,這個屬性總共有六個設定值。( 范例:css-flexbox-demo6.html、W3C 說明 )

  • flex-start:預設值,對齊最上面的 cross start

  • flex-end:對齊最下面的 cross end

  • center:垂直置中

  • space-between:將第一行與最后一行分別對齊最上方與最下方

  • space-around:每行平均分配間距

  • stretch:內容元素全部撐開

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

G、flex-wrap

在剛剛的范例看到一個 flex-wrap 的屬性,這個屬性負責的是讓內容的元素換行,因為當我們把父元素的 display 設定為 flex 或 inline-flex 的時候,子元素就是以單行的方式,彈性撐滿父元素,所以就要利用 flex-wrap 來換行,共有三個設定值。( 范例:css-flexbox-demo7.html)

  • nowrap:預設值,單行

  • wrap:多行

  • wrap-reverse:多行,但內容元素反轉

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

H、order

剛剛在 flex-wrap 的屬性里頭看到了可以把元素反轉,order 這個屬性更是可以直接指定一個數字,就可以由小到大的排列順序

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

I、flex

好酒沉甕底,有耐心看到下面的才會看到重點喔哈哈!flex 應該是 Flexbox 里頭最重要的屬性了,而 flex 其實是由三個屬性組合而成,依照先后順序分別是「flex-grow」、「flex-shrink」和「flex-basis」,如果 flex 只填了一個數值 ( 無單位 ),那麼預設就是以 flex-grow 的方式呈現,至于三個屬性的解釋如下:

flex-grow:數字,無單位,當子元素的 flex-basis 長度「小」于它自己在父元素分配到的長度,按照數字做相對應的「伸展」比例分配,預設值為 1,設為 0 的話不會進行彈性變化,不可為負值。

flex-shrink:數字,無單位,當子元素的 flex-basis 長度「大」于它自己在父元素分配到的長度,按照數字做相對應的「壓縮」比例分配,預設值為 1,設為 0 的話不會進行彈性變化,不可為負值。

flex-basis:子元素的基本大小,作為父元素的大小比較基準,預設值為 0,也因為預設值為 0,所以沒有設定此屬性的時候,會以直接採用 flex-grow 屬性,flex-basis 也可以設為 auto,如果設為 auto,就表示子元素以自己的基本大小為單位。。

三個屬性可以分開設定,也可以合在一起用一個 flex 統(tǒng)一設定,下面的例子展現出同一個 Flexbox,在不同的寬度,子元素會有不同大小的呈現。

HTML代碼:

CSS3中Flexbox如何使用

CSS代碼:

CSS3中Flexbox如何使用

CSS3中Flexbox如何使用

如果用動畫來表現,可以看出拉長的時候紅色會變得比藍色長,但壓縮的時候卻是藍色變得比紅色長,如此一來就更能體會 flex 在響應式設計里頭的關鍵腳色蘿!

CSS3中Flexbox如何使用

感謝各位的閱讀!關于CSS3中Flexbox如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI