弹性盒模型

父元素控制子元素的布局方案, 需要给父元素添加flex样式,
被添加的元素称为容器, 所有子元素自动成为容器成员(flex项目)
display: flex/inline-flex (对内,对外), flex对外显示为块级元素, 独占一行
子元素 float/clear/vertical-align 失效

主轴: 从第一个元素到第二个元素的方向为主轴方向,
交叉轴: 元素满一行之后换行的方向

  • flex-direction(盒子排列方向, 也是主轴朝向):
    row(默认), 从左到右的水平方向排列
    row-reverse, 从右到左与row相反
    column, 从上往下排列
    column-reverse, 从下往上排列与column相反

  • flex-wrap(内部盒子换行方向, 交叉轴的朝向):
    nowrap(默认), 默认单行(弹性压缩)
    wrap, 多行显示, 超出换行, 类似float, 高度不塌陷, 从上往下换行
    wrap-reverse, 翻转wrap排列, 从下往上换行

  • direction和wrap合并写法:
    flex-flow: row nowrap(默认)

内部子元素对齐方式

  • justify-content(项目在主轴对齐方式)
    flex-start: (默认) 当前轴起始位置开始排列
    flex-end: 当前轴起始位置对面开始排列
    center: 居中排列
    space-between: 将空隙均分到元素间排列, 行要有空余
    space-around: 包含收尾均分, 行要有空余

  • align-content(多行元素[列]对齐方式)
    flex-start: 起点对齐
    flex-end: 起点对面对齐
    center: 居中展示
    stretch: 均分交叉轴宽度
    space-between: 均分间距
    space-around: 包含收尾均分间距

  • align-items(单行控制), 当前排列行或者列的对齐方式
    stretch(默认): 内部元素没有设置高度将拉伸占满
    flex-start: 内部元素顶部对齐
    flex-end: 内部元素底部对齐
    center: 内部元素中线对齐
    baseline: 项目第一行文字基线对齐

2020-03-01_12-22-42.png

项目元素在交叉轴上没有长度, 那么它会默认填满当前交叉轴的长度

item项目样式(设置在每个元素的样式, 用于单独控制)
order(可0可负数), 定义项目的排列顺序, 序号越小越在前面, 和元素的书写顺序无关, 默认元素order为0, 大于0, 必然在默认为0的后面

  <ul>
    <li>1</li>
    <li style="order:1;">2</li>
    <li>3</li>
  </ul>

flex-grow: 单个元素的放大比例
flex-grow, 默认为0
将多余的空间按flex-grow分配
考虑当前所有元素的flex-grow的值, 按比例进行分配

flex-shrink: 单个元素的缩小比例
flex-shrink: 默认为1, 如果空间不足缩小比例, 越大收缩越多
将超出的部分按flex-shrink比例分配
注意: flex-shrink: 0表示刚体不缩小, 不支持负数

flex-basic: 长度(规定长度)
auto: 默认; content: 基于内容自动计算

flex 缩放合并写法(item复合写法)
flex-grow flex-shrink flex-basic
auto(1,1,auto) 正常的盒子(会被压缩拉伸的物体)
none(0,0,auto) 钉子户的盒子(不具有弹性的物体)

align-self 特殊对齐方式
允许单个项目拥有其他项目不一样的对齐方式, 可覆盖align-item属性
auto, 默认, 继承父元素的align-items属性
flex-start/flex-end/center/baseline/stretch

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。