前端布局-flex布局
flex布局
- 特点
- flex是flexible Box的缩写,意为弹性布局,用来为盒模型提供最大的灵活性,任何容器都可以指定为flex布局
- flex弹性布局,操作方便,布局简单,移动亿应用广泛
- pc端支持较差,
- 与传统布局区别
- 传统布局在pc端兼容性好,但是布局繁琐,有局限性,不能在移动端方便的布局
- 两者总结(随便写写)
- 如果是pc端,用传统布局
- 如果是移动或者不考虑兼容性的pc端布局,就是用flex弹性布局
布局原理
- 当我们为父元素设置flex布局后,子元素的 float clear 和 vertical-align属性都会失效
- 伸缩布局 = 弹性布局 = 伸缩盒布局 = 弹性盒布局 = flex布局
- 采用flex布局的元素称为 “flex容器” 它的所有子元素自动成为容器的成员,
被称为 “flex项目”- div盒子设置 display:flex属性后 这个div就是flex容器,而div下的所有子元素都是flex项目,这些子容器可以纵向排列,也可以横向排列
- 总结
- 通过给父盒子添加 flex属性,来控制盒子的位置和排列方式
flex-direction (父元素属性)
作用
- 设置主轴的方向
介绍(瞎bb)
- 在flex布局中是分为主轴和测轴两个方向的,同样的叫法有 行和列 x轴和y轴
- 默认主轴的方向就是在x轴的方向,水平向右
- 而侧轴的方向就是在y轴的方向,水平向下
- 但是主轴和侧轴的方向是可以变换的
属性
总结
- flex-direction属性决定了主轴的方向(即子元素排列的方向)
- 主轴和侧轴是会变化的,就看谁是主轴,谁是侧轴,而我们的子元素就是跟着主轴来排列的
- 属性为 row 即 x轴为主轴 属性为 column 即 y轴为主轴
用法 (css样式)
div{ /* 给父级 添加flex属性*/ display: flex; width: 800px; height: 300px; background-color: pink; /* 从左到右 默认*/ /* flex-direction: row; */ /* 从右到左 */ /* flex-direction: row-reverse; */ /* 把flex主轴设置为y轴 */ /* 从上到下 */ /* flex-direction: column; */ /* 从下到上 */ /* flex-direction: column-reverse; */ } div span{ width: 150px; height: 100px; background-color: purple; }
- html标签
<div> <span></span> <span></span> <span></span> </div>
- html标签
justify-content (父元素属性)
作用
- 该属性定义了子元素在主轴的对其方式
属性值
- flex-start 默认值 从头部开始,如果主轴是x轴,则从左到右
- flex-end 从尾部开始排列
- center 在主轴居中对其
- space-around 平分剩余空间
- space-between 先贴两边,在平分剩余空间(重要)
- 比如有3个div 边上的2个div贴两边,中间的div占剩余的空间
用法
div{ /* 给父级 添加flex属性*/ display: flex; width: 800px; height: 300px; background-color: pink; /* 默认的主轴是 x轴 row; */ /* justify-content: 是设置主轴子元素的排列方式; */ /* justify-content: flex-start; 默认的 */ /* 贴右边对其 */ /* justify-content: flex-end; */ /* 居中对其 */ /* justify-content: center; */ /* 平分剩余空间 */ /* justify-content: space-around; */ /* 左右盒子贴两边 中间盒子平分 */ justify-content: space-between; } div span{ width: 150px; height: 100px; background-color: purple; } </style>
- html标签
<div> <span></span> <span></span> <span></span> <span></span> </div>
- html标签
flex-warp (父元素属性)
作用
- 可以让flex元素是否换行
- 默认情况下子元素是排列在主轴直线上的(不会换行)
属性值
- nowarp 默认值 不换行
- wrap 换行
用法
- 在父元素设置 flex-wrap: wrap 子元素就会换行了,前提是父元素要有 display:flex样式
div{ display: flex; width: 600px; height: 400px; background-color: pink; flex-wrap: wrap; /*让子元素换行*/ }
- 在父元素设置 flex-wrap: wrap 子元素就会换行了,前提是父元素要有 display:flex样式
align-items (父元素属性)
作用
- 设置侧轴的元素排列方式
- 改属性是控制子元素在侧轴的排列方式(子项为单项的时候使用(不换行))
属性值
- flex-start 默认值 从上到下
- flex-end 从下到上
- center 垂直居中 (用的多)
- stretch 拉伸
用法
div{ /* 给父级 添加flex属性*/ display: flex; width: 800px; height: 300px; background-color: pink; justify-content: center; /* 子元素水平居中主轴对其居中(主轴)*/ align-items: center; /*子元素垂直居中 侧轴对其居中(侧轴)*/ /* 注意: div是 父元素 给父元素设置后是让子元素排列 */ }
align-content (父元素属性)
作用
- 设置侧轴上子元素的排列方式(多行)
- 适用于子项出现多行的情况下,在单行是没有效果的(子元素换行就可以用这个)
属性值
- flex-start 默认值 在侧轴的头部开始排列
- flex-end 在侧轴的尾部开始排列
- center 在侧轴中间显示
- space-around 子元素平分侧轴的剩余空间
- space-between 子元素在侧轴线分布在两边 在平分中间的剩余空间
- stretch 设置子元素的高度平分父元素高度(就是子元素的高度跟父元素一样高)
flex-flow (父元素属性)
- 作用
- 是flex-direction和flex-wrap的复合属性
- 有两个属性的特点
- 用法
div{ /* 给父级 添加flex属性*/ display: flex; width: 600px; height: 300px; background-color: pink; /* flex-direction: column; flex-wrap: wrap; */ /* 把设置主轴方向和是否换行简写 */ flex-flow: column wrap; /*这个属性是设置主轴的方向 和 换行*/ }
flex (子元素属性)
- 作用
- 定义子项分配的剩余空间时,用flex来标识该子元素站多少的份数
- 属性
数字 表示子元素在父元素剩余空间中占多少份 % 表示子元素在父元素剩余空间的占百分之多少
align-self (子元素属性)
- 作用
- 控制子元素自己在侧轴的排列方式
- 允许单个子元素和其他子元素不同的对其方式,可覆盖align-items属性
- 属性
- auto 默认值 表示继承父元素的align-items属性,如果没有父元素则效果和stretch相同
- 其他属性均和 align-items相同
order (子元素属性)
- 作用
- 定义子元素的排列顺序
- 数值越小排列越靠前 默认为0 可以为负值
- 和z-inde不一样,z-inde是元素叠在一起时显示的顺序,而order是元素分散开,显示的位置的顺序
- 用法
div { display: flex; width: 80%; height: 300px; background-color: pink; /* 让三个子盒子沿着侧轴底侧对其 */ /* align-items: flex-end; */ /* 让三号盒子下来底侧 */ } div span{ width: 150px; height: 100px; background-color: purple; margin-right: 5px; } div span:nth-child(3){ align-self: flex-end; } div span:nth-child(2){ order: -1; /* 让2号盒子在最前面 */ } /*span的排列顺序现在是 2 1 3了*/
- html标签
<div> <span>1</span> <span>2</span> <span>3</span> </div>
本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!