善假于物:彈性盒flex

工欲善其事必先利其器(多學(xué)一點(diǎn)知識,少寫一行代碼:)

布局神器-彈性盒flex

(因?yàn)閷W(xué)了,于是寫了出來)
彈性盒是無需復(fù)雜計(jì)算的小規(guī)模的布局模塊。既然是布局,就會有外部容器(兵長)和內(nèi)部項(xiàng)目(小兵)?,F(xiàn)在這個(gè)隊(duì)伍已發(fā)展到第三代flex啦~

專業(yè)術(shù)語

首先要明確的一點(diǎn),以下所說為無旋轉(zhuǎn)的正常視圖。
main:主軸(水平方向??梢岳斫鉃閤軸)
cross:側(cè)軸(垂直方向??梢岳斫鉃閥軸)
配個(gè)圖,理解下(其實(shí)不理解也沒事知道有這么個(gè)東西就ok~)

flex_terms.png

注意事項(xiàng)

  • 多列模塊 中的column-*屬性對彈性子元素?zé)o效。
  • float 和 clear 對彈性子元素?zé)o效。使用 float 會導(dǎo)致 display 屬性計(jì)算為 block.
  • vertical-align 對彈性子元素的對齊無效。

關(guān)于容器container(兵長)

需要配備 display:flex/inline-flex(塊/內(nèi)聯(lián)) 才會被瀏覽器認(rèn)可為是容器
(就像是沒看到自由之翼誰知你是調(diào)查團(tuán)的感覺~)

容器有6個(gè)屬性(兵長特技:不同的陣列有不同的威力~)

  • flex-direction(排列方向,起點(diǎn):上下左右)

  • row

  • row-reverse

  • column

  • column-reverse

  • flex-wrap(換行方式)

  • nowrap 一行

  • wrap 正序

  • wrap-reverse 倒序

  • flex-flow(direction和wrap的簡寫,默認(rèn)row nowrap)

  • justify-content(單行水平對齊方式)

  • flex-start 左對齊

  • flex-end 右對齊

  • center 居中對齊

  • space-between 分散對齊

  • space-around 等距分散對齊

  • align-items(單行垂直對齊方式)

  • flex-start 頭部對齊

  • flex-end 尾部對齊

  • center 中間對齊

  • baseline 基準(zhǔn)線對齊(第一行文字)

  • stretch 頭尾對齊(如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度)

  • align-content(多行垂直對齊方式)

  • flex-start 頭部對齊

  • flex-end 尾部對其

  • center 中間對齊

  • space-between 分散對齊

  • space-around 等距分散對齊

  • stretch 頭尾對齊

關(guān)于項(xiàng)目item(小兵)

容器內(nèi)部的子元素就是項(xiàng)目了

項(xiàng)目也有6個(gè)屬性(小兵的特技)

  • order(排序值。數(shù)值越小,排列越靠前,默認(rèn)為0)
  • flex-grow(放大比例,默認(rèn)為0,即如果存在剩余空間,也不放大)
  • flex-shrink(縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將縮小。值為0,不受影響)
  • flex-basis(預(yù)設(shè)寬度,默認(rèn)值為auto,即項(xiàng)目的本來大?。?/li>
  • flex (grow, shrink和basis的簡寫,默認(rèn)為0 1 auto。后兩個(gè)屬性可選|該屬性有兩個(gè)快捷值:[auto (1 1 auto) ]和 [none (0 0 auto)])
  • align-self(自身對齊方式;默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。)

版本及兼容性(發(fā)展史)

第三代:flex(優(yōu)勢:各種新技術(shù))
第二代:flexbox(好像沒啥優(yōu)勢)
第一代:box(優(yōu)勢:支持老版本,包括微信內(nèi)置瀏覽器- -!)

彈性盒兼容性.jpg

由圖可知,父級容器最保險(xiǎn)的兼容性寫法,應(yīng)該是

.flex-container{
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
}

利用sass的@mixin簡易化書寫

栗子1.父級容器

  @mixin flex-container() {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  }

栗子2.子級項(xiàng)目排序

  @mixin order($val) {
  -webkit-box-ordinal-group: $val;  
  -moz-box-ordinal-group: $val;     
  -ms-flex-order: $val;     
  -webkit-order: $val;  
  order: $val;
  }

栗子3.子級項(xiàng)目縮放及預(yù)設(shè)寬度

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

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

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