02-小程序:Flex布局

一、簡介

  • 1.1闸英、flex 布局 (Flexible布局枚驻,彈性布局)是在小程序里面常用的布局方式
    官方文檔:flexbox
    官方文檔:align
  • 1.2首妖、開啟了 flex 布局元素叫做 flex container(里面的元素叫做flex items)
  • 1.3、設(shè)置 display屬性為 flex 或者 inline-flex 也可以成為 flex container
    flexflex containerblock-level 形式存在
    inline-flexflex containerinline-level 形式存在

二塔次、CSS常用屬性

  • 2.1方篮、應(yīng)用在 flex container上的CSS屬性:flex-flowflex-direction励负、flex-wrap藕溅、justify-contentalign-items继榆、align-content
    flex 布局模型如下:

    flex 布局模型

    • <1>巾表、flex-direction (決定了 main axis(主軸) 的方向)
      flex items 默認(rèn)都是沿著 main axis(主軸)從 main start 開始往 main end 方向排布
      flex-direction決定了 main axis(主軸) 的方向,有 4 個取值 row(默認(rèn)值)略吨、row-reverse集币、columncolumn-reverse

      row

      row-reverse

      column

      column-reverse

    • <2>翠忠、justify-content 決定了flex items 在 main axis 上的對齊方式鞠苟,取值如下:

      justify-content取值

      flex-start(默認(rèn)值):與 main start 對齊
      flex-end:與 main end 對齊
      center:居中對齊
      space-between:flex items之間的距離相等,flex items與main start秽之、main end 兩端對齊
      space-evenly:flex items之間的距離相等当娱,flex items與main start、main end之間的距離等于flex items之間的距離
      space-around:flex items之間的距離相等考榨,flex items與main start趾访、main end之間的距離等于flex items之間的距離的一半

    • <3>、align-items 決定了flex items 在 cross axis 上的對齊方式董虱,取值如下:

      align-items取值

      stretch(默認(rèn)值):當(dāng)flex items在 cross axis 方向上的size為auto時扼鞋,會自動拉伸填充 flex container
      flex-start:flex items與cross start對齊
      flex-end:flex items與cross end對齊
      center:居中對齊
      baseline:與基準(zhǔn)線對齊

    • <4>申鱼、flex-wrap 決定了 flex container 是單行還是多行
      nowrap(默認(rèn)):單行
      wrap:多行
      wrap-reverse:多行(對比wrap,cross start與cross end 相反)

    • <5>、flex-flow :是 flex-direction || flex-wrap 的簡寫云头,如下
      flex-flow:column wrap 等價于 => 如下

      flex-direction:column
      flex-wrap:wrap
      

      flex-flow:row reverse 等價于 => 如下

      flex-direction:row reverse
      flex-wrap:nowrap
      

      flex-flow:wrap 等價于 => 如下

      flex-direction:row
      flex-wrap:wrap
      
    • <6>捐友、align-content 決定了多行 flex items 在 cross axis 上的對齊方式,用法與justify-content類似

      align-content取值

      stretch(默認(rèn)值):與 align-items 的 stretch 類似
      flex-start:與 cross start 對齊
      flex-end:與 cross end 對齊
      center:居中 對齊
      space-between:flex items之間的距離相等溃槐;flex items與cross start匣砖、cross end兩端對齊
      space-around:flex items之間的距離相等;flex items與cross start昏滴、cross end之間的距離是flex items之間距離的一半
      space-evenly:flex items之間的距離相等猴鲫;flex items與cross start、cross end之間的距離是flex items之間距離的一半

  • 2.2谣殊、應(yīng)用在 flex items 上的CSS屬性:flex拂共、flex-growflex-basis姻几、flex-shrink宜狐、orderalign-self

    • <1>蛇捌、order 決定了 flex items的排布順序:可以設(shè)置任意整數(shù)(如:正整數(shù)抚恒、負(fù)整數(shù)、0)络拌,值越小就越排在前面俭驮,默認(rèn)值是0,如下代碼,因為 3 的order最大春贸,其他的都是默認(rèn)0表鳍,所以 3 排在最后

      order
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>測試?yán)?lt;/title>
          <style>
              .container {
                   border: 1px solid #000;
                   width: 200px;
                   height: 400px;
                   margin-left: 20px;
                   margin-top: 20px;
                   display: flex;
                   flex-direction: row;
                   flex-wrap: wrap;
                   align-content: space-evenly;
      
              }
             .item {
                   width: 100px;  
                   height: 100px; 
                   font-size: 50px;
                   color: #fff;
                   text-align: center;
                   line-height: 100px;
              }
              .item:nth-of-type(1) {
                   background-color: #f00;
              }
              .item:nth-of-type(2) {
                   background-color: #0f0;
              }
              .item:nth-of-type(3) {
                   background-color: #00f;
                   order: 1;
               }
              .item:nth-of-type(4) {
                   background-color: #0ef;
              }
              .item:nth-of-type(5) {
                   background-color: #a0f;
              }
          </style>
      </head>
      <body>
          <div class="container">
               <div class="item">1</div>
               <div class="item">2</div>
               <div class="item">3</div>
               <div class="item">4</div>
               <div class="item">5</div>
          </div>
      
      </body>
      </html>
      
    • <2>、align-self
      flex items 可以通過 align-self 覆蓋 flex container 設(shè)置的 align-items
      auto(默認(rèn)值):遵從 flex container 的 align-items設(shè)置
      stretch祥诽、flex-start譬圣、flex-end、center雄坪、baseline厘熟,效果跟 align-items 一致

    • <3>、flex-grow:決定了 flex items 如何沿主軸方向 擴(kuò)展

      • (1)维哈、可以設(shè)置任意非負(fù)數(shù)子(正小數(shù)绳姨、正整數(shù)、0)阔挠,默認(rèn)值是0飘庄;當(dāng) flex container 在main axis 方向上有剩余 size 的時候,flex grow 的屬性才會生效

      • (2)购撼、如果所有的 flex items 的 flex-grow 總和sum 超過 1跪削,每個flex item擴(kuò)展的size為flex container的剩余 size * flex-grow / sum

        提示:sum指的是 所有flex item的flex-grow 之和

      • (3)谴仙、如果所有的 flex items 的 flex-grow 總和sum 不超過 1,每個flex item擴(kuò)展的size為flex container的剩余 size * flex-grow

      • (4)碾盐、 flex items 擴(kuò)展后的最終 size 不能超過 max-width/max-height

    • <4>晃跺、flex-shrink:決定了 flex items 如何沿主軸方向 收縮

      • (1)、可以設(shè)置任意非負(fù)數(shù)子(正小數(shù)毫玖、正整數(shù)掀虎、0),默認(rèn)值是1付枫;當(dāng) flex container 在main axis 方向上超過了flex container的 size 時候烹玉,flex shrink 的屬性才會生效

      • (2)、每個 flex items 收縮的 size為 flex items超出flex container的size * 收縮比例 / 所有 flex items 的收縮比例之和

        提示

        • (1)阐滩、每個flex item的flex-shrink之和>=1才是:每個 flex items 收縮的 size為 flex items超出flex container的size * 收縮比例 / 所有 flex items 的收縮比例之和
        • (2)二打、每個flex item的flex-shrink之和 < 1 則:每個 flex items 收縮的 size為 flex items超出flex container的size* flex-shrink之和 * 收縮比例 / 所有 flex items 的收縮比例之和
        • (2)比(1)多一個 * flex-shrink之和
      • (3)、收縮比例 = flex-shrink * flex-item 的base size叶眉,base size 就是 flex item 放入 flex container 之前的 size

      • (4)、 flex items 最終收縮的 size 不能小于 max-width/max-height

      提示
      收縮比例** = flex-shrink * flex-item 的base size芹枷,對于 base的size要看main axis 方向來決定是 width還是height

    • <5>衅疙、flex-basis:用來設(shè)置 flex items 在main axis 方向的base size,如果main axis 方向是寬:那么base size設(shè)置的就是寬度鸳慈;如果main axis 方向是高:那么base size設(shè)置的就是高度饱溢。

      • auto(默認(rèn)值)、content:取決于內(nèi)容本身的size
      • 決定 flex items 最終base size的因素走芋,從優(yōu)先級高到低
        (1): max-width/max-height/min-width/max-height
        (2):flex-basis
        (3):width/height
        (4):內(nèi)容本身的 size (前三個沒有設(shè)置的情況下绩郎,4 生效)
    • <6>、flexflex-grow flex-shrink? || flex-basis 的簡寫翁逞,其中 ? 表示可有可無肋杖,|| 表示 flex-shrinkflex-basis 可以出現(xiàn)一個

      • flex 默認(rèn)值是:0 1 auto
      • 取值 none0 0 auto

三、應(yīng)用在 flex container 和 flex items 上的CSS屬性的總結(jié)

  • 3.1挖函、 flex container
    • <1>状植、flex-flow 是 flex-direction || flex-wrap 的簡寫
    • <2>、flex-direction 設(shè)置主軸 (main axis) 的方向
    • <3>怨喘、flex-wrap 設(shè)置是否能換行
    • <4>津畸、justify-content 設(shè)置 flex items 在 main axis 上的對齊方式
    • <5>、align-items 設(shè)置 flex items 在cross axis 上的對齊方式(一般是針對單行)
    • <6>必怜、align-content 設(shè)置 flex items 在 cross axis 上的對齊方式 (一般是針對多行)
  • 3.2肉拓、 flex items
    • <1>、flex 是 flex-grow flex-shrink? || flex-basis 的簡寫
    • <2>梳庆、flex-grow 決定了flex items 在main axis 方向如何擴(kuò)展
    • <3>暖途、flex-shrink 決定了 flex items 在 main axis 方向上如何收縮
    • <4>卑惜、flex-basis 設(shè)置 flex items 在main axis 方向上的 base size(具體是寬還高要根據(jù)main axis來決定)
    • <5>、order 設(shè)置flex items 的排布順序
    • <6>丧肴、align-self 允許 flex items 覆蓋 flex cintainer設(shè)置的 align-items
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末残揉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芋浮,更是在濱河造成了極大的恐慌抱环,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纸巷,死亡現(xiàn)場離奇詭異镇草,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瘤旨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門梯啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人存哲,你說我怎么就攤上這事因宇。” “怎么了祟偷?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵察滑,是天一觀的道長。 經(jīng)常有香客問我修肠,道長贺辰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任嵌施,我火速辦了婚禮饲化,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗伤。我一直安慰自己吃靠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布足淆。 她就那樣靜靜地躺著撩笆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缸浦。 梳的紋絲不亂的頭發(fā)上夕冲,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機(jī)與錄音裂逐,去河邊找鬼歹鱼。 笑死,一個胖子當(dāng)著我的面吹牛卜高,可吹牛的內(nèi)容都是我干的弥姻。 我是一名探鬼主播南片,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼庭敦!你這毒婦竟也來了疼进?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤秧廉,失蹤者是張志新(化名)和其女友劉穎伞广,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疼电,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嚼锄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔽豺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片区丑。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖修陡,靈堂內(nèi)的尸體忽然破棺而出洋机,到底是詐尸還是另有隱情洒敏,我是刑警寧澤割卖,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布蝌焚,位于F島的核電站,受9級特大地震影響号杏,放射性物質(zhì)發(fā)生泄漏婴氮。R本人自食惡果不足惜斯棒,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一盾致、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荣暮,春花似錦庭惜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砾跃,卻和暖如春骏啰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抽高。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工判耕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翘骂。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓壁熄,卻偏偏與公主長得像帚豪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子草丧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,435評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,460評論 0 6
  • 網(wǎng)頁布局(layout)是CSS的一個重點應(yīng)用狸臣。 行內(nèi)元素也可以使用Flex布局。.box{ display: i...
    君臨天下夜未央閱讀 1,285評論 0 5
  • flex是flexible Box的縮寫昌执,意為"彈性布局"烛亦,用來為盒狀模型提供最大的靈活性。任何一個容器都可以指定...
    胡蘿卜櫻閱讀 744評論 0 1
  • 為了在曾經(jīng)傷害過我們的人面前仙蚜,揚眉吐氣此洲。 看了,電視劇我的前半生委粉,有句話特別的實在呜师,我們這么努力,就是為了在以前曾...
    Lily_a6cc閱讀 189評論 2 3