百度前端技術(shù)學(xué)院2017flexbox學(xué)習(xí)

百度前端技術(shù)學(xué)院2017已經(jīng)結(jié)束,本文是之前學(xué)習(xí)中涉及的flex知識小結(jié)。

flex布局在網(wǎng)頁布局中非常實用,尤其是在面對一些較為彈性的布局設(shè)置的時候,會有異常驚艷的表現(xiàn)。在目前流行的響應(yīng)式布局觀念里,面對大的項目,一般采用bootstrap的柵格化布局來應(yīng)對,而對于一些小的項目,則完全可以采用flex布局。

對flex布局的學(xué)習(xí),我認為關(guān)鍵是抓住伸縮容器和伸縮項目這兩個概念,圍繞這兩個概念,利用屬性來改變兩者之間的相對關(guān)系,既是flex布局。本文主要從基本術(shù)語、常用屬性兩方面進行梳理。

基本術(shù)語:伸縮容器、伸縮項目;主軸、主軸方向、主軸起點、終點、主軸長度、主軸長度屬性(同理有側(cè)軸的一套基本術(shù)語)。下面一張圖可以攘括這一套基本術(shù)語的概念(轉(zhuǎn)自w3cplus,非常慶幸站在巨人的肩膀上,感謝前端領(lǐng)域大漠老師等眾大牛):

需要注意的是,flex的主側(cè)軸并不是對應(yīng)的元素width、height,主軸長度既可以是width值,也可以是height值,依據(jù)具體屬性的設(shè)置而來。

常用屬性:我認為可以把屬性歸納為兩類來學(xué)習(xí):一類寫進伸縮容器里,一類寫在伸縮項目里。

A.寫進伸縮容器內(nèi)的屬性:這些屬性控制的主要都是伸縮項目在容器內(nèi)的布局。

1.最主要的屬性,display:flex/inline-flex。將容器設(shè)置為伸縮容器;

2.flex-flow:控制伸縮項目在容器內(nèi)的伸縮流方向和行數(shù);這個屬性實則為flex-direction和flex-wrap的縮寫:
(1).flex-driection:控制伸縮流方向,屬性值有row(默認)、row-reverse、column、column-reverse,術(shù)語描述為主軸方向分別與文檔書寫方向平行或反向平行,主軸方向分別與塊布局方向平行或反向平行,如果直白描述,可以簡單當(dāng)作從左至右/從右至左/從上到下/從下到上。
(2).flex-wrap:控制伸縮項目單行還是多行排列,屬性值有nowrap(默認,單行),wrap(多行),wrap-reverse(多行,側(cè)軸方向交換)。

3.align-items:沿側(cè)軸方向?qū)R方式,屬性值有flex-start(伸縮項目沿著伸縮容器側(cè)軸起點邊對齊),flex-end(側(cè)軸終點邊對齊),center(同一行的伸縮項目沿著該行中線對齊),stretch(伸縮項目拉伸填充至同一高度),baseline(沿著伸縮項目文字基線對齊)。

4.justify-content:沿主軸方向?qū)R。屬性值有flex-start(伸縮項目從主軸起點開始往終點排列),flex-end(伸縮項目從主軸終點開始往起點排列),center(居中排列,如果伸縮項目設(shè)有margin,會有margin值間距),space-between(伸縮項目平均分布,且兩側(cè)項目靠近起終點),space-around(平均分布兩側(cè)會留出平均分配寬度一半的值)。

5.align-content:(我的理解是,多行情況下,每一行作為一個大的伸縮項目,沿側(cè)軸對齊方式,此時與justify-content的屬性值作用原理相同),屬性值有flex-start、flex-end、center、space-btween、space-around、stretch。

寫進伸縮項目內(nèi)的屬性:主要有兩個,或者說四個,分別控制了項目出現(xiàn)的順序和伸縮狀態(tài)。

1.order:在伸縮容器內(nèi),利用此屬性,完全不依靠對html結(jié)構(gòu)的改變,就可以改變伸縮項目的出現(xiàn)順序。默認值都為0,值越高,越排在后面(整數(shù)值)。

2.flex(實為flex-grow/flow=shrink/flex-basis這個屬性縮寫)。格式為flex:flex-grow flow=shrink flex-basis。其中:
(1).flex-grow:為伸縮項目所占的空間比例或者空間的伸長比例(正數(shù)),與伸縮項目數(shù)相關(guān),也需要與flex-basis相配合才能準(zhǔn)確定義。默認值為1(如果省略)。
(2).flex-basis:伸縮項目的初始長度,為帶長度單位的值。如果為0(默認值),此時伸縮項目會按照flex-gorw所設(shè)置的值形成的比例來分配其所占伸縮容器的主軸長度。如果設(shè)置為auto,該伸縮項目的長度等于其寬度或高度屬性值(取決于主軸方向),此時,當(dāng)伸縮容器主軸的長度大于伸縮項目初始長度之和時,多出的長度會按照flex-grow值的比例來分配給各伸縮容器。
(3.)flow=shrink:伸縮項目的收縮比例,當(dāng)伸縮項目長度之和大于伸縮容器主軸長度時,多出來的長度按照這個值的比例平均分配給各伸縮項目進行收縮。(默認值為1)。
此外,flex綜合屬性有兩個特定值auto和initial。兩者分別表示flex:1 1 auto;flex:0 1 auto。

以上,是對flex學(xué)習(xí)后的理解。主要參考Flexbox——快速布局神器。
此外,自己在寫demo過程中編寫了一個簡單的flex布局,通過在chrome瀏覽器里運行,利用開發(fā)者工具可以適時動態(tài)查看以上屬性的差別。
  demo;

小星的博客|Small Star' Blog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J的外補...
    _Yfling閱讀 14,104評論 1 92
  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,819評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,714評論 0 6
  • flex布局基礎(chǔ)知識 main axis(主軸): Flex容器的主軸主要用來配置Flex項目。它不一定是水平,這...
    前端小兵閱讀 555評論 0 1
  • 一般而言,一個靜態(tài)web頁面的呈現(xiàn)需要通過html和css配合實現(xiàn)。html相當(dāng)于頁面的骨架,規(guī)定了文檔的結(jié)構(gòu)。c...
    夏木與晴空閱讀 1,145評論 0 3

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