善假于物:弹性盒flex

2015-12-08  本文已影响58人  zd9027

工欲善其事必先利其器(多学一点知识,少写一行代码:)

布局神器-弹性盒flex

(因为学了,于是写了出来)
弹性盒是无需复杂计算的小规模的布局模块。既然是布局,就会有外部容器(兵长)和内部项目(小兵)。现在这个队伍已发展到第三代flex啦~

专业术语

首先要明确的一点,以下所说为无旋转的正常视图。
main:主轴(水平方向。可以理解为x轴)
cross:侧轴(垂直方向。可以理解为y轴)
配个图,理解下(其实不理解也没事知道有这么个东西就ok~)

flex_terms.png

注意事项

关于容器container(兵长)

需要配备 display:flex/inline-flex(块/内联) 才会被浏览器认可为是容器
(就像是没看到自由之翼谁知你是调查团的感觉~)

容器有6个属性(兵长特技:不同的阵列有不同的威力~)

关于项目item(小兵)

容器内部的子元素就是项目了

项目也有6个属性(小兵的特技)

版本及兼容性(发展史)

第三代:flex(优势:各种新技术)
第二代:flexbox(好像没啥优势)
第一代:box(优势:支持老版本,包括微信内置浏览器- -!)

弹性盒兼容性.jpg

由图可知,父级容器最保险的兼容性写法,应该是

.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.子级项目排序

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

栗子3.子级项目缩放及预设宽度

  @mixin flex-item($values) {
  -webkit-box-flex: $values;
  -moz-box-flex:  $values;
  -webkit-flex:  $values;
  -ms-flex:  $values;
  flex:  $values;
  }
上一篇 下一篇

猜你喜欢

热点阅读