简单易懂的 Flexbox
文章目录
简介
Flexbox 是 CSS 3 的布局方式,可以轻松实现传统布局中难以实现的布局。
基本用法
- 设置父容器的
display为flex,然后调节容器相关的属性。 调节子元素相关的属性。
1 2 3 4 5<div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div>1 2.container { display: flex; ... } .item { ... }
具体用法
要使用 Flexbox 布局,你需要设置父容器和子元素的属性。
父容器设置
启用 flex 布局
display: flex | inline-flex设置主轴方向
flex-direction: row | row-reverse | column | column-reverserow默认值,从左到右row-reverse从右到左column从上到下column-reverse从下到上
设置子元素的换行方式
flex-wrap: nowrap | wrap | wrap-reversenowrap默认值,让所有子元素排在一行中wrap自动换行,方向为从右到左。(这里的方向是指换行方向,不是指排列方向)wrap-reverse自动换行,方向为从左到右
flex-direction和flex-wrap的简写:flex-flow: <'flex-direction'> || <'flex-wrap'>设置子元素的在主轴中对齐方式
justify-content: flex-start | flex-end | center | space-between | space-aroundflex-start默认值,在起始位置对齐。和flex-direction: row一起用的话相当于左对齐,和flex-direction: column一起用的话相当于上对齐flex-end在终点位置对齐center居中对齐space-bewteen第一个子元素会在起始位置,最后一个子元素会在终点位置,它们之间的元素会在剩余位置中平均分布space-around所有元素都会平均分布在容器中。注意,视觉上元素不是平均分布的。那是因为所有元素所占的空间都被平均分了,元素两边都有空间,第一个元素和最后一个元素靠近容器的边缘只有一份空间,其他空白的地方都是有两份空间组成的,所以看起来两边的空间少,而中间的空间多。好好体会一下space-around字面上的意思就能理解了。
设置子元素在侧轴中的对齐方式
align-items: flex-start | flex-end | center | baseline | stretchstretch默认值,拉伸元素来填充父容器flex-start在侧轴的起始位置对齐flex-end在侧轴的终点位置对齐center居中于侧轴baseline在基线对齐
设置侧轴中行(不是元素)的对齐方式
align-content: flex-start | flex-end | center | space-between | space-around | stretchstretch默认值,拉伸行来填充剩余的空间flex-start所有行在容器的起始位置对齐flex-end所有行在容器的终点位置对齐center所有行居中于容器space-between类似justify-content: space-betweenspace-around类似justify-content: space-around
子元素设置
设置元素的排序方式
order: <integer>,数字越小,排越前面。默认情况下是以文档流的先后顺序排序,负值合法。调节元素的扩展能力
flex-grow: <number>,默认为1,增大该值表示该元素所占空间是其他元素的 n 倍,负值不合法。调节元素的收缩能力
flex-shrink: <number>,默认为 1,减少该值表示该元素所站空间是其他元素的 1/n,负值不合法。调节元素的基本大小:
flex-basis: <length> | auto,默认为 auto。上面属性的缩写:
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]指定元素的排列方式,作用和容器中的
align-items类似,优先级比align-items高。
注意:float, clear, vertical-align 在子元素中不起作用。
参考资料
文章作者 scarletsky
上次更新 2019-04-30 (95a170d)