flex布局教程

2017-11-02  本文已影响0人  前端雨

传统布局基于盒模型, 依赖 display属性+position属性+float属性. 它对于那些特殊布局非常不方便, 比如, 垂直居中不容易实现.

flex布局是什么?

flex是flexible box的缩写, 意为"弹性布局", 用来为盒状模型提供最大的灵活度.

基本概念

采用flex布局的元素, 称为flex容器(flex container), 简称"容器". 它的所有元素自动成为容器的成员, 称为flex项目(flex item), 简称项目.
容器默认存在两根轴: 水平的主轴和垂直的交叉轴. 主轴的开始位置(与边框的交叉点)叫做main start, 结束位置交错main end; 交叉轴的开始位置叫做 cross start, 结束位置叫做cross end.
项目默认沿着主轴排列. 单个项目占据的主轴空间叫做main size, 占据的交叉轴空间叫做cross size.

容器的属性

3.1flex-direction属性决定主轴的方向(即项目的排列方向)
.box {
    flex-direction: row | row-reverse | column | column-reverse;
}
3.2 flex-wrap属性

默认情况下, 项目都排在一条线(又称轴线)上, flex-wrap定义, 如果一条轴线排不下, 如何换行.

.box{
      flex-wrap: nowrap | wrap | wrap-reverse;
}

nowrap(默认): 不换行
wrap: 换行, 第一行在上方
wrap-reverse: 换行, 第一行在下方.

3.3 flex-flow

flex-flow属相是flex-direction属性和flex-wrap属性的简写形式, 默认值为row nowrap.

.box {
      flex-flow: <flex-direction> || <flex-  wrap>;
}
3.4 justify-content属性

justify-content属性定义了项目在主轴上的对齐方式.

.box {
      justify-content: flex-start | flex-end | center | space-between | space-around;
}

对齐方式与轴的方向有关. 下面假设主轴从左到右

3.5 align-items属性
3.6 align-content属性

align-content属性定义了多根轴线的对齐方式. 如果项目只有一根轴线, 该属性不起作用.

.box {
      align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
项目的属性

以下6个设置在项目上order | flex-grow flex-shrink flex-basis flex align-self

如果所有项目的flex-grow属性都为1, 则它们将等分剩余空间(如果有的话), 如果一个项目的flex-grow属性为2, 其它项目为1, 则前者占据的剩余空间将比其他项多一倍

此文摘于此http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

上一篇 下一篇

猜你喜欢

热点阅读