目录
flex-flow(flex-direction和flex-wrap的简写形式)
align-items(决定了flex items在交叉轴上的对齐方式)
flex-basis(设置flex items在主轴上的base size)
align-self(覆盖flex-container设置的align-items)
flex(flex-grow、flex-shrink和flex-basis的简写属性)
认识flexbox
- 弹性盒子是一种按行或按列布局元素的一维布局方法
- 元素可以膨胀以填充额外的空间,可以收缩适应更小的空间
- 通常我们用flexbox来进行布局的方案成为flex布局
flex布局里两个重要的概念
flex container:开启了flex布局的元素叫做flex container(装弹性盒子的容器)
设置 display属性为flex或者inline-flex可以成为flex container
- flex:flex container 以block-level形式存在
- inline-flex:flex container 以 inline-level形式存在
flex item:flex container里面的直接子元素叫做flex item
- flex item的布局要受flex container属性的设置来进行控制和布局
- flex item不再严格区分块级元素和行内级元素
- flex item默认情况下是包裹内容的,但是可以设置宽度和高度
简单来说就是flex item的布局受flex container控制,flex container有行内级和块级的区别,flex item 不严格区分块级和行内级元素
flex布局里的两个轴(主轴和交叉轴)
注意:主轴不一定是水平的,只是默认主轴是水平的,主轴和交叉轴互相垂直
flex布局属性分类
flex布局里面有很多属性,很多小伙伴只是把这些属性死记硬背,如图所示,我们可以将这些属性分为两类,一类是应用在flex container上的属性,一类是应用在flex items上的属性,这样是不是就清晰许多啦。
flex container上的CSS属性
flex-direction(主轴方向)
当flex-container里的宽度或高度小于flex-items时,flex-wrap将会起作用
- row(默认值)
- row-reverse
- column
- column-reverse
flex-wrap(单行还是多行)
- nowrap(默认) 单行
- wrap 多行
flex-flow(flex-direction和flex-wrap的简写形式)
顺序任意并且都可以省略
justify-content(主轴上item的分布方式)
当flex-container宽度大于flex-items的总宽度时
- flex-start(默认值):与main start 对齐——类似于左对齐
- flex-end:与main end 对齐——类似于右对齐
- center:居中对齐
- space-between
- flex items之间的距离相等
- 与main start、main end两端对齐
- space-around
- flex items之间的距离相等
- flex items与main start、main end之间的距离是flex items之间距离的一半
- space-evenly
- flex items之间的距离相等
- flex items与main start、main end之间的距离等于flex items之间的距离
align-items(flex items在交叉轴上的对齐方式)
- normal:弹性布局中,效果和stretch一样
- stretch:当flex items在交叉轴方向的size为auto时,会自动拉伸至填充flex container
- flex-start:与cross start对齐
- flex-end:与cross end对齐
- center:居中对齐
- baseline:与基准线对齐
align-content-很少用
flex-items上的CSS属性
flex-grow(flex items如何扩展)
- 可以设置为任意非负数字(正小数、正整数、0),默认值是0
- 当flex container在主轴方向上有剩余size时,flex,grow属性才会有效
- flex items扩展后的最终size不能超过max-width/max-height
flex-shrink(flex items如何缩小)
- 可以设置为任意非负数字(正小数、正整数、0),默认值是1
- 当flex items在主轴方向上超过了flex container的size,flex-shrink才会有效
- flex items收缩后的最终size不能超过min-width/min-height
flex-basis(设置flex items在主轴上的base size)
- 和width设置没什么区别,当内容为一个长的单词时,内容会把item的宽度撑开
order(flex items的排布顺序)
- 可以设置任意整数(正整数、负整数、0),值越小就越排在前面(默认值为0)
align-self(覆盖flex-container设置的align-items)
- auto(默认值):遵从flex container的align-items 设置
- stretch、flex-start、flex-end、center、baseline,效果跟align-items一致