flex布局 特点
- 开启了flex布局的元素叫
flex container
(弹性容器) - flex container里面的直接子元素叫做
flex item
(弹性项目)
- flex item的布局将受flex container属性的设置来进行控制和布局
flex item
不再严格区分块级元素和行内元素- flex item默认情况下时包裹内容的,但是可以设置宽度和高度
- flex: flex container以
block-level
形式存在 - inline-flex: flex container以i
nline-level
形式存在
设置主轴的方向:
row(默认)
:主轴从左往右- row-reverse:主轴从右往左
- column:主轴从向至下
- column:主轴从下至上
设置当项目在一行排不下时候是否换行(flex container是单行显示还是多行)
nowrap(默认)
:单行(不换行)- wrap:多行(换行)
- wrap-reverse:多行(换行,顺序是由下到上)
flex-direction和flex-wrap的简写,
顺序任意,每个值不是必写
flex-flow:<‘flex-direction’> || <‘flex-wrap’>
justify-content
设置项目在主轴(main axis)的对齐方式
felx-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(相邻的两个item之间的距离)之间距离的一半
- space-evenly:兼容性差
- 两端也有空隙,并且所有的空间进行等分
设置(单行)flex item(项目)在cross axis(交叉轴)的对齐方式
normal(默认)
:在弹性布局中,效果和stretch一样- stretch:当flex item 在cross axis 方向的size为 auto时,会自动拉伸至填充flex container(
项目的高度是auto时才生效
) - flex-start:与cross start对齐
- flex-end:与cross end对齐
- center:居中对齐
- baseline:与基准线对齐
设置多行flex items在cross axis上的对齐方式,用法与justify-content类似
- stretch(默认值):与align-items的stretch类似
- flex-start:
- flex-end:
- center:
- space-between
- space-around
- space-evenly:兼容性差
【笔记|flex布局入门讲解】设置flex item的排布顺序
- 可以设置
任意整数
,值越小就越排在前面 - 默认值是0
设置flex item在across axis的位置
- 默认值是normal
设置flex items如何扩展(拉伸/成长)
说明
:当一个容器里面的项目排列完成,还剩下空间的时候,这些剩下的空间是不会分给项目,让项目填充的,如果设置了flex-grow:1,那么剩余的空间将都会分给设置这个属性的项目,如果一个项目设置了flex:1,一个设置了flex:2,那么剩余的空间将会被等分成3分,设置1的得到1份,设置2的得到2份- 可以设置
任意非负的数字
(正小数、正整数、0) - 默认值是
0
- 当flex container在main axis方向有
剩余的size
时,flex-grow属性才会生效
- 如果所有flex items的flex-grow
总和sum超过1
,每个flex item扩展的四则为- flex container的剩余size*flex-grow/sum
- flex items扩展后的最终size不能超过max-width/max-height
- 比如给一个项目设置了max-width\max-height,那么项目所分配的空间和项目的宽/高之和最多就是max-width\height
决定了flex items如何收缩(缩小)
当项目在容器内水平排不下的时候,项目是否会被压缩
- 可以设置
任意非负数字
- 默认值是
1
- 当flex items在main axis方向上
超过flex container的size,flex-shrink属性才会生效
- 如果所有flex items的flex-shrink总和超过1,每个flex item收缩的size为
- flex items超出flex container的size*收缩比例/所有flex items的收缩比例之和
- flex items收缩后的最终size不能小于min-width/min-height
用来设置flex items 在main axis方向上的basis size(基础大小)
默认值是auto
举例
: 当给一个项目设置了width,里面的内容是一个英文单词的时候,当单词在最后一个的时候放不下整个单词会直接换行,如果设置了flex-basis时候,则不会换行,会自动拉伸当前项目的宽度,知道单词能放下觉得flex-item最终的basis size的因素(优先级从上到下)
- max-width/height、min-width/height
- flex-basis
- width\height
- 内容本身的size
是felx-grow | | flex-shrink | | flex-basis的简写,flex属性可以指定1、2、3个值
- 值只有一个无单位的数字时,会被当作flex-grow
- 值是一个有效的宽度的时候,会被当作flex-basis
- 关键字 none 、auto、initial
推荐阅读
- 前端|contenteditable格式化html文本转svg
- CSS|30分钟学会html+css实现乒乓球快打特效(内附源码)
- Kubernetes|Kubernetes 笔记 / 生产环境
- css|记录使用@media的尴尬
- 前端|axios在vue中的使用
- java|基于 SpringBoot + Vue 的前后端分离的考试系统
- 前端|H5页面前端开发常见的兼容性问题解决方法
- 笔记|require.context()的用法详解
- 笔记|MATLAB在线编辑器online