flex 布局
- 通过给父盒子设置flex属性,来控制盒子的位置和排列方式。
- flex任何一个容器都可以指定为flex布局。
- 当父盒子设为flex布局以后,子元素的float、clear、vertical-align属性都将失效。
一、flex布局"父项"常见属性
1.flex-direction设置主轴方向:
- row (默认)从左到右。
- row-reverse 从右到左。
- column 从上到下。
- column-reverse从下到上。
2.justify-content设置"主轴"上的对齐方式
- flex-start(默认)从头开始。
- flex-end 从尾部开始。
- center 在主轴中对齐。
- space-around平分剩余空间。
- space-between 先两边贴边再平均分配剩余空间。
3.flex-wrap设置子元素是否换行。
- nowrap 不换行。不换行会改变子盒子的大小。
- wrap 换行。
- wrap-reverse:换行:交换一二行的位置
4.align-items设置"侧轴"上子元素排列方式(单行)
- flex-start(默认) 从上到下。
- flex-end 从下到上。
- center 挤在一起居中。
- stretch拉伸 设置拉伸不要子盒子高度
5.align-content设置"侧轴"上子元素的排列方式(多行)
- flex-start(默认)从侧轴的头部开始排列。
- flex-end 在侧轴的尾部开始排列。
- center 在侧轴的中间开始排列。
- space-between 子项在侧轴先分布在两头,再平均分配剩余空间。
- stretch 设置子元素高度平分父元素的高度。
6.flex-flow属性是flex-direction和flex-wrap的复合写法。
flex-flow:column wrap;
二、flex布局"子项"常见的属性。
1. flex定义子项分配剩余空间,用flex来表示占多少份数。
2. align-self 子项单独在侧轴上的对齐方式。
3. order 设置子元素的排列顺序,数字越小越大。
4. flex-shrink:定义了项目的缩小比例,默认1,如果空间不足,该项目将缩小
- 例如:如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
5. flex-basis属性定义了在分配多余空间前,项目占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余的空间。默认值为auto,即项目本来的大小
6. flex-grow属性:属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
- 例如:如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。