flexbox简介
- 正如他的名字所示——Flex,弹性的意思。
- 主要是为了适应各种各样的显示设备和屏幕大小
- FlexBox布局元素分为:弹性容器 和 弹性项
- Flexbox(弹性盒子)布局模式(目前是个W3C规范草案)旨在为布局,对齐和分布容器内的子项提供一种更加高效的方式,修改其子项的宽、高乃至顺序的能力,并且足够完美的去填充可用的空间。一个使用了Flex布局的容器,将会扩展其子项以至于填充可用的空间,或者缩小他们以防止溢出容器。
- ###### 注意:FlexBox布局最适用于应用程序的组件和小规模布局,而网格布局更适用于大规模的布局。
- ###### 注意:在IE中,FlexBox只兼容 IE10+
flexbox历史:
- 2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。
- 2009年的老语法 display:box;
- 2011年一种临时的非官方的语法 display:flexbox;
- 已成为规范的新语法 display:flex;
使用方法
- 给父亲指定 display: flex; 给孩子指定 flex: 1;
- ###### 注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
.flex_box {
display: -webkit-flex;
display: -webkit-box;
display: -ms-flexbox;
display: -moz-box;
display: flex;
}
.flex_item {
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}
弹性容器 的属性
• flex-direction
• flex-direction属性决定弹性项的排列方向。
• flex-direction: row | row-reverse | column | column-reverse;
• flex-wrap、
• flex-wrap属性定义,如果一条轴线排不下,如何换行。
• flex-wrap: nowrap | wrap | wrap-reverse;
• flex-flow
• flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
• justify-content
• justify-content属性定义了项目在主轴上的对齐方式。
• justify-content: flex-start | flex-end | center | space-between | space-around;
• align-items
• align-items属性定义项目在交叉轴上如何对齐。
• align-items: flex-start | flex-end | center | baseline | stretch;
• align-content
• align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
• align-content: flex-start | flex-end | center | space-between | space-around | stretch;
弹性项 的属性
- flex-grow
- flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
- flex-grow: ;
- flex-shrink
- flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
- flex-shrink: ; /* default 1 */
- flex-basis
- flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
- flex-basis: | auto; /* default auto */
- flex
- flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。
- flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。flex-shrink和flex-basis是可选的。默认是0 1 auto。
- 注意:如果元素不是弹性盒模型对象的子元素,则flex属性不起作用
- 该属性有两个快捷值:auto (代表 1 1 auto) 和 none (代表 0 0 auto)。
- order
- order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
- order: ;
- align-self
- align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
- align-self: auto | flex-start | flex-end | center | baseline | stretch;