布局的传统解决方案,基于盒子模型,依赖display属性+position属性+float属性。对于那些特殊布局很是不方便。 html
Flex布局,意思是弹性布局,用来为盒子模型提供最大的灵活性。
任何一个容器均可以指定为Flex布局。 web
display: -webkit-flex
复制代码
采用Flex布局的元素,称为Flex容器。简称容器,它的全部子元素自动成为容器成员,成为Flex项目。 浏览器
容器默认存在两跟轴。水平方向称为主轴,垂直方向称为交叉轴。
项目默认沿主轴排布。布局
共有6个属性,以下:flex
该属性决定主轴的方向。
值: row/column/ reverse-row/reverse-column
默认值为: row主轴为水平方向,起点在左边。 spa
默认状况下,项目都排在一条轴线上。该属性定义,若是一个轴线排列不下,是否换行。
值: nowrap/wrap/wrap-reverse(换行,第一行在下面)
默认值为 nowrap 表示不换行 code
flex-flow是flex-direction和flex-wrap的简写模式。默认值为 row nowrap。
可是不常见,仍是分开写。 cdn
定义了项目在主轴上的对齐方式。
值: flex-start/center/flex-end/space-between/space-around
默认值是:flex-start 左对齐
注意:
space-between 表示 两端对齐,项目之间的间隔都相等(项目与左右边距没有距离) 记忆方法 between 表示项目间距离
space-around 每一个项目两侧的距离相等(项目到左右边距的距离为项目间距离的一半)记忆方法 around表示项目周围,包括项目与左右边界的距离htm
定义项目在交叉轴上如何对齐。
默认值: stretch
值为:blog
定义了多根轴线的对齐方式,若是只有一个轴线,则不起做用。
默认值: stretch
值:
项目属性共有6个:
定义项目的排列顺序。数值越小,排列越靠前。
默认为0。
定义项目的放大比例。默认为0,表示不放大,即若是存在剩余空间,也不放大。
若是其余项目的flex-grow属性都为1,则它们将等分剩余空间。
若是有的项目的flex-grow属性不一样,则会按比例分配空间。
定义项目的缩小比例。默认为1,即若是空间不足,该项目会缩小。
若是全部项目的flex-shrink属性都为1,那么当空间不足时,都将等比例缩小(默认状况下,或缩小)
若是一个项目的flex-shrink属性为0,那么当空间不足时,其余项目缩小,该项目不缩小。
负值对该属性无效。
(须要再理解)
定义了在分配多余空间之间,项目占据的主轴空间。 浏览器根据这个属性,来计算主轴是否还有剩余空间。
默认值为auto,表示项目的原来大小。
.item {
flex-basis:<length>/auto
}
复制代码
flex属性是 flex-grow,flex-shrink,flex-basis三个属性的缩写形式。
默认值是 0,1,auto
还有两个快捷值,auto(1,1,auto) none(0,0,auto)
建议优先使用这个属性。
align-self属性容许单个项目与其余项目不同的对齐方式,可覆盖align-items属性。默认值是auto。表示继承父元素的align-items属性,若是没有父元素,则等同于stretch。