display:flex; 可以在一行显示
flex不分行内块
布局原理
用来盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局
1.当我们为父盒子设为flex布局以后 子元素的float clear vertical-align 属性将失效
2.伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局 (flex布局的一些别名)
3.通过给父盒子添加flex属性,来控制盒子的位置和排列方式
一、给父亲添加常见属性
1.1 flex-direction 设置主轴方向
1.主轴与侧轴
默认主轴的方向就是x轴方向 水平向右 、
默认侧轴的方向就是y轴方向 水平向下
属性值 说明
row 默认从左到右
row-reverse 从右到左
column 从上到下
column-reverse 从下到上
1.2 justify-content 设置主轴上子元素的排列方式
justify-content 属性定义了项目在主轴上的对齐方式
注: 使用之前一定要确定好主轴是哪一个
属性值 说明
flex-start 默认值从头部开始,如果主轴是x 则从左到右
flex-end 从尾部开始排列
center 在主轴居中对齐,如果主轴是x 水平居中
space-around 平分剩余空间
space-between 先贴两边 在平分剩余空间
space-evenly 平均分配剩余空间,而且盒子左右两边的距离相等,跟around是有不同的
1.3flex-wrap 设置子元素是否换行
默认情况下,项目都排在一条线上,(又称“轴线上”) flex-wrap 属性定义默认是不换行的
注:如果装不开,会缩小子元素的宽度,放到父元素里面
属性值 说明
nowrap 默认值 不换行
wrap 换行
注 wrap-reverse 这个属性可以把第一行换到盒子底部,如果有两行就会上下颠倒也就是翻转
1.4 align-items 设置侧轴上子元素排列方式(单行)
该属性是控制子项在侧轴(默认是y轴上的排列方式,在子项为单项的时候使用
属性值 说明
flex-start 从上到下
flex-end 从下到上
center 挤在一起居中(垂直居中)
stretch 拉伸(默认值)
注:stretch子项不给高度才能拉伸
1.5align-content 设置侧轴上的子元素的排列方式(多行)
设置子项在侧轴上的排列方式,并且只能用于子项出现换行的情况,在单行下是没有效果的
属性值 说明
flex-start 默认值在侧轴的头部开始排列
flex-end 在侧轴的尾部开始排列
center 在侧轴的中间显示
space-around 子项在侧轴平分剩余空间
space-between 子项在侧轴两头,再平分剩余空间
stretch 设置子元素高度,平分父元素高度
1.6 flex-flow
flex-flow 属性是flex-directiom和flex-wrap属性的复合属性
设置主轴方向是否换行
二、flex 布局子项的常见属性
flex 子项目占的份数
align-self 控制子项自己在侧轴的排列方式
order属性定义子项的排列顺序(前后顺序)
2.1 flex 属性
flex 属性定义子项目分配剩余空间 用flex来表示占多少份数
flex : 默认0份
实际的分配额度=各自的份数/同级子项的总份数
2.2 align-self 控制子项自己在侧轴上的排列方式
align-self 属性允许单个项目与其他项目不一样的对齐方式,可覆盖
align-items属性 默认值为auto,表示继承父元素的align-items属性,如果没有父元素,
则等同于stretch
span:nth-child(2){
align-self:flex-end; }
2.3 order属性定义项目的排列顺序
数值越小 排列越靠前 默认值为0