CSS布局

Flex彈性布局

參考:Flex 布局教程:語(yǔ)法篇


傳統(tǒng)解決方案:盒裝模型。
使用:display、position、float等。
缺點(diǎn):不易實(shí)現(xiàn)垂直居中等特殊需求。


新解決方案:Flex布局。用來(lái)為盒狀模型提供最大的靈活性。
display:flex; display:inline-flex(行內(nèi)元素使用);
設(shè)為flex后,會(huì)形成flex容器,所有子元素變?yōu)槿萜髦械捻?xiàng)目。有關(guān)容器的所有專有名詞參見(jiàn)參考文章。

容器有6個(gè)屬性可設(shè)置:
  • flex-direction
    決定主軸方向。
flex-direction: 
row(主軸為水平,起點(diǎn)在左) 
row-reverse (主軸為水平,起點(diǎn)在右)
column(主軸為垂直,起點(diǎn)在上) 
column-reverse(主軸為垂直,起點(diǎn)在下);
  • flex-wrap
    元素超過(guò)一行時(shí),決定如何換行。
flex-wrap: 
nowrap(默認(rèn),不換行)
wrap(換行,第一行在上方)
wrap-reverse(換行,第一行在下方);
  • flex-flow
    是flex-direction和flex-wrap的簡(jiǎn)寫形式。
 flex-flow: <flex-direction> || <flex-wrap>;
  • justify-content
    項(xiàng)目在主軸上的對(duì)齊方式。
justify-content: 
flex-start(默認(rèn),左對(duì)齊)
flex-end (右對(duì)齊)
center(居中)
space-between(兩端對(duì)齊,間隔相等,首末無(wú)間隔)
space-around(每個(gè)項(xiàng)目?jī)啥碎g隔相等,首末有間隔);
  • align-items
    決定交叉軸的對(duì)齊方式。
align-items: 
flex-start(交叉軸起點(diǎn)對(duì)齊,上對(duì)齊)
flex-end(下對(duì)齊)
center (中點(diǎn)對(duì)齊)
baseline (項(xiàng)目的第一行文字的基線對(duì)齊)
stretch(默認(rèn),如果未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器高度);
  • align-content
    決定多根軸線的對(duì)齊方式。
align-content: 
flex-start (交叉軸起點(diǎn)對(duì)齊)
flex-end (交叉軸終點(diǎn)對(duì)齊)
center (交叉軸中點(diǎn)對(duì)齊)
space-between (交叉軸兩端對(duì)齊,軸線之間間隔平均分布)
space-around (每根軸線兩側(cè)間隔都相等)
stretch(默認(rèn),軸線占滿整個(gè)交叉軸);
項(xiàng)目6個(gè)屬性可以設(shè)置:
  • order
    項(xiàng)目排列順序。數(shù)值越小,排列越靠前,默認(rèn)值為0.
order: <integer>;
  • flex-grow
    項(xiàng)目的放大比例,默認(rèn)為0(及時(shí)存在剩余空間,也不放大)。類似antd的<Col span={number}/>,只不過(guò)此處為比值。
 flex-grow: <number>; 
  • flex-shrink
    定義項(xiàng)目縮小比例。默認(rèn)為1(空間不足,該項(xiàng)目將縮?。?。設(shè)為0的項(xiàng)目不縮小。
 flex-shrink: <number>; 
  • flex-basis
    分配多余空間之前,項(xiàng)目占據(jù)的主軸控件。默認(rèn)為auto。
 flex-basis: <length> | auto; 
  • flex
    是flex-grow、flex-shrink、flex-basis的簡(jiǎn)寫。默認(rèn)0 1 auto。
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

該屬性有兩個(gè)快捷值:auto (1 1 auto)none (0 0 auto)。

建議優(yōu)先使用這個(gè)屬性,而不是單獨(dú)寫三個(gè)分離的屬性,因?yàn)闉g覽器會(huì)推算相關(guān)值。

  • align-self
    允許單個(gè)項(xiàng)目有不一樣的對(duì)齊方式,可覆蓋anlign-items屬性。默認(rèn)為auto,表示集成父元素屬性,如沒(méi)有父元素,等于stretch。
align-self: auto | flex-start | flex-end | center | baseline | stretch;
居中
  • 利用彈性布局
    找到需要設(shè)置對(duì)齊的元素的父元素,為其設(shè)置彈性布局:
    display: flex;
    justify-content: center; // 水平居中
    align-items: center; // 垂直居中
  • 垂直居中
    CSS3的transform屬性也可以實(shí)現(xiàn)這個(gè)功能,通過(guò)設(shè)置div的transform: translateY(-50%),意思是使得div向上平移(translate)自身高度的一半(50%)。
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 概述 position屬性 position屬性列表 absolute 屬性 fixed 屬性 relative屬...
    充滿活力的早晨閱讀 822評(píng)論 0 0
  • 目錄一. CSS布局二. Flex布局?1. 容器(父視圖)的屬性?2. item(子視圖)的屬性三. 幾個(gè)小練習(xí)...
    意一ineyee閱讀 2,563評(píng)論 0 7
  • 一般而言,一個(gè)靜態(tài)web頁(yè)面的呈現(xiàn)需要通過(guò)html和css配合實(shí)現(xiàn)。html相當(dāng)于頁(yè)面的骨架,規(guī)定了文檔的結(jié)構(gòu)。c...
    夏木與晴空閱讀 1,147評(píng)論 0 3
  • 采用Flex布局的元素,稱為Flex容器(flex container),簡(jiǎn)稱”容器”。它的所有子元素自動(dòng)成為容器...
    codeTao閱讀 716評(píng)論 0 0
  • 彈性盒子是一種新技術(shù),但在如今各個(gè)瀏覽器都廣泛支持的情況下,它已經(jīng)開(kāi)始準(zhǔn)備廣泛應(yīng)用了。 彈性盒子提供了工具,允許快...
    codeTao閱讀 984評(píng)論 0 0

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