flex-box 弹性盒子布局
Flex是什么
弹性布局(flexible box)模块(目前是w3c候选的推荐)旨在提供一个更加有效的方式来布置,对齐和分布在容器之间的各项内容,即使它们的大小是未知或者动态变化的。
由于flexbox是一个整体模块,而不是单一的一个属性,它涉及到了很多东西,包括它的整个属性集。它们之中有一些是在父容器上设置,而有一些则是在子容器上设置。
与栅格布局(grid Layout)的区别
Flexbox布局是最合适的一个应用程序的组件,以及小规模的布局,而网格布局是用于较大规模的布局。
属性介绍
1、display属性 (适用于父类容器元素上) 定义一个flex容器,内联或者根据指定的值,来作用于下面的子类容器。
- box:将对象作为弹性伸缩盒显示。(伸缩盒最老版本)
- inline-box:将对象作为内联块级弹性伸缩盒显示。(伸缩盒最老版本)
- flexbox:将对象作为弹性伸缩盒显示。(伸缩盒过渡版本)
- inline-flexbox:将对象作为内联块级弹性伸缩盒显示。(伸缩盒过渡版本)
- flex:将对象作为弹性伸缩盒显示。(伸缩盒最新版本)
- inline-flex:将对象作为内联块级弹性伸缩盒显示。(伸缩盒最新版本)
- css 列(CSS columns)在弹性盒子中不起作用
float
,clear
andvertical-align
在flex项目中不起作用2、flex-direction (适用于父类容器的元素上) 定义:设置或检索伸缩盒对象的子元素在父容器中的位置。原文来自:http://caibaojian.com/flexbox-guide.html
2、flex-direction (适用于父类容器的元素上) 定义:设置或检索伸缩盒对象的子元素在父容器中的位置。
- row:横向从左到右排列(左对齐),默认的排列方式。
- row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。
- column:纵向排列。
- column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。
.box{ display:-webkit-flex; display:flex; flex-direction:row; }
3、flex-wrap (适用于父类容器上) 设置或检索伸缩盒对象的子元素超出父容器时是否换行。
- nowrap:当子元素溢出父容器时不换行。
- wrap:当子元素溢出父容器时自动换行。
- wrap-reverse:反转 wrap 排列。
.box{ display:-webkit-flex; display:flex; -webkit-flex-wrap:nowrap; flex-wrap:nowrap; }
4、flex-flow (适用于父类容器上) 复合属性。设置或检索伸缩盒对象的子元素排列方式。(本属性,实为
flex-direction
属性和flex-wrap
属性的结合)
- [ flex-direction ]:定义弹性盒子元素的排列方向。
- [ flex-wrap ]:定义弹性盒子元素溢出父容器时是否换行。
.box{ display:-webkit-flex; display:flex; -webkit-flex-flow:row nowrap; flex-flow:row nowrap; }
5、justify-content (适用于父类容器上) 设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。 当弹性盒里一行上的所有子元素都不能伸缩或已经达到其最大值时,这一属性可协助对多余的空间进行分配。当元素溢出某行时,这一属性同样会在对齐上进行控制。
- flex-start:弹性盒子元素将向行起始位置对齐。
- flex-end:弹性盒子元素将向行结束位置对齐。
- center:弹性盒子元素将向行中间位置对齐。
- space-between:弹性盒子元素会平均地分布在行里。如果最左边的剩余空间是负数,或该行只有一个子元素,则该值等效于'flex-start'。
- space-around:弹性盒子元素会平均地分布在行里,两端保留子元素与子元素之间间距大小的一半。
.box{ display:-webkit-flex; display:flex; -webkit-justify-content:flex-start; justify-content:flex-start; }
6、align-items (适用于父类容器上) 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
- flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
- flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
- center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
- baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
- stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。
.box{ display:-webkit-flex; display:flex; -webkit-align-items:flex-start; align-items:flex-start; }
7、align-content (适用于父类容器上) 设置或检索弹性盒堆叠伸缩行的对齐方式。
- flex-start:各行向弹性盒容器的起始位置堆叠。
- flex-end:各行向弹性盒容器的结束位置堆叠。
- center:各行向弹性盒容器的中间位置堆叠。
- space-between:各行在弹性盒容器中平均分布。
- space-around:各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。
- stretch:各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于'flex-start'。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。
.box{ display:-webkit-flex; display:flex; -webkit-flex-wrap:wrap; flex-direction:wrap; -webkit-align-content:flex-start; align-content:flex-start; }
8、order (适用于弹性盒模型容器子元素)
- <integer>:用整数值来定义排列顺序,数值小的排在前面。可以为负值。
.box{ display:-webkit-flex; display:flex; -webkit-order:-1; order:-1; }