善假于物:弹性盒flex

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

布局神器-弹性盒flex

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

专业术语

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

flex_terms.png

注意事项

  • 多列模块 中的column-*属性对弹性子元素无效。
  • float 和 clear 对弹性子元素无效。使用 float 会导致 display 属性计算为 block.
  • vertical-align 对弹性子元素的对齐无效。

关于容器container(兵长)

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

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

  • flex-direction(排列方向,起点:上下左右)

  • row

  • row-reverse

  • column

  • column-reverse

  • flex-wrap(换行方式)

  • nowrap 一行

  • wrap 正序

  • wrap-reverse 倒序

  • flex-flow(direction和wrap的简写,默认row nowrap)

  • justify-content(单行水平对齐方式)

  • flex-start 左对齐

  • flex-end 右对齐

  • center 居中对齐

  • space-between 分散对齐

  • space-around 等距分散对齐

  • align-items(单行垂直对齐方式)

  • flex-start 头部对齐

  • flex-end 尾部对齐

  • center 中间对齐

  • baseline 基准线对齐(第一行文字)

  • stretch 头尾对齐(如果项目未设置高度或设为auto,将占满整个容器的高度)

  • align-content(多行垂直对齐方式)

  • flex-start 头部对齐

  • flex-end 尾部对其

  • center 中间对齐

  • space-between 分散对齐

  • space-around 等距分散对齐

  • stretch 头尾对齐

关于项目item(小兵)

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

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

  • order(排序值。数值越小,排列越靠前,默认为0)
  • flex-grow(放大比例,默认为0,即如果存在剩余空间,也不放大)
  • flex-shrink(缩小比例,默认为1,即如果空间不足,该项目将缩小。值为0,不受影响)
  • flex-basis(预设宽度,默认值为auto,即项目的本来大小)
  • flex (grow, shrink和basis的简写,默认为0 1 auto。后两个属性可选|该属性有两个快捷值:[auto (1 1 auto) ]和 [none (0 0 auto)])
  • align-self(自身对齐方式;默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。)

版本及兼容性(发展史)

第三代: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;
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容