😄
xlzy520
  • README
  • 执笔
    • 2017
      • 01 网站动态标题的两种方式
      • 02 RN App 外部唤醒踩坑记
    • 2018
      • 01 图片加解密二三事
      • 02 优雅实现 BackTop
      • 03 Vue 一键导出 PDF
      • 04 不一样の烟火
      • 05 Python 之禅
      • 06 Python 文件操作
    • 2019
      • 01 Aurora 食用指南
      • 02 Godaddy 域名找回记事
      • 03 一个接口的诞生
      • 04 SpringMVC 前后端传参协调
      • 05 主题集成友链访问统计功能
      • 06 Github Style 博客主题
      • 07 动态加载 JS 文件
      • 08 WebSocket 心跳重连机制
      • 09 洗牌算法实现数组乱序
      • 10 React Hook 定时器
      • 11 Fetch data with React Hooks
      • 12 字符编码の小常识
      • 13 WSL 安装 Docker 实录
      • 14 Eriri comic reader
  • 书斋
    • ES6 标准入门
      • 01 变量声明与解构赋值
      • 02 语法的扩展
      • 03 数据类型与数据结构
      • 04 Proxy 和 Reflect
      • 05 异步编程 Promise
      • 06 Iterator 和 for of 循环
      • 07 Generator 函数
      • 08 Async 函数
      • 09 Class 类
    • JavaScript 设计模式
      • 01 基础知识
      • 02 设计模式(上)
      • 03 设计模式(下)
      • 04 设计原则和编程技巧
  • 前端
    • JavaScript
      • 01 JavaScript 秘密花园
      • 02 JavaScript 正则技巧
      • 03 从浏览器解析 JS 运行机制
      • 04 Canvas 基础用法
      • 05 Flex 弹性布局
      • 06 Blob Url And Data Url
      • 07 函数节流与函数防抖
      • 08 排序算法初探
    • Node
      • 01 Node Tips
      • 02 七天学会 NodeJS
    • Note
      • 01 Note
      • 02 Snippets
      • 03 Interview
      • 04 Git
      • 05 Docker
      • 06 Line
    • React
      • 01 React Props Children 传值
      • 02 Use a Render Prop!
      • 03 React Hook
      • 04 React 和 Vue 中 key 的作用
    • Vue
      • 01 Vue Tips
      • 02 Vue 构建项目写入配置文件
      • 03 Vue 项目引入 SVG 图标
  • 后端
    • Java
      • 01 浅析 Java 反射
      • 02 Java 服务端分层模型
    • Note
      • 01 Note
      • 02 Linux
      • 03 MySQL
    • Spring
      • 01 Spring Boot
      • 02 Spring Data
      • 03 JPA
      • 04 Swagger
      • 05 AOP
      • 06 SSM
    • Project
      • 01 微信点餐系统
由 GitBook 提供支持
在本页
  • 容器的属性
  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content
  • 项目的属性
  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

这有帮助吗?

  1. 前端
  2. JavaScript

05 Flex 弹性布局

上一页04 Canvas 基础用法下一页06 Blob Url And Data Url

最后更新于5年前

这有帮助吗?

Flex(Flexible Box)即为“弹性布局” ,它是一种一维的布局模型。采用 Flex 布局的元素,称为 Flex 容器(flex container)。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item)。

Flex 容器有两根轴线:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的起终点分别为 main start和main end;交叉轴的起终点分别为cross start和cross end。项目沿主轴排列,单个项目占据的主轴空间为main size,占据的交叉轴空间为cross size。

一张图说明 Flex Box 模型:

Flex Box

当前主流浏览器对 Flex 布局都能良好兼容,可以放心使用:

容器的属性

Flex 容器可设置 6 个属性:

  • flex-direction:决定主轴的方向

  • flex-wrap:子项目是否可换行

  • flex-flow:属于 flex-direction 属性和 flex-wrap 属性的简写形式

  • justify-content:定义了项目在主轴上的对齐方式

  • align-items:定义项目在交叉轴上如何对齐

  • align-content:定义了多根轴线的对齐方式

flex-direction

flex-direction 属性决定主轴的方向,可选值:row | row-reverse | column | column-reverse,各值表现如下:

.box {
  flex-direction: row | row-reverse | column | column-reverse;
}

flex-wrap

flex-wrap 属性定义子项目是否可换行,可选值:nowrap | wrap | wrap-reverse,各值表现如下:

.box {
  flex-wrap: nowrap | wrap | wrap-reverse;
}

flex-flow

flex-flow 属性属于 flex-direction 属性和 flex-wrap 属性的简写形式,默认值 row nowrap。

justify-content

justify-content:属性定义了项目在主轴上的对齐方式,可选值:flex-start | flex-end | center | space-between | space-around,各值表现如下:

.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}

align-items

align-items 属性定义项目在交叉轴上如何对齐,可选值 flex-start | flex-end | center | baseline | stretch,各值表现如下:

.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}

align-content

align-content 属性定义多根轴线的对齐方式,如果项目只有一根轴线,该属性不起作用,可选值flex-start | flex-end | center | space-between | space-around | stretch,各值表现如下:

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}

项目的属性

Flex 项目可设置 6 个属性:

  • order:定义项目的排列顺序

  • flex-grow:定义项目的放大比例

  • flex-shrink:定义了项目的缩小比例

  • flex-basis:定义了在分配多余空间之前,项目占据的主轴空间

  • flex:属于 flex-grow, flex-shrink 和 flex-basis 的简写形式

  • align-self:允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性

order

order 属性定义项目的排列顺序,数值越小,排列越靠前,默认为 0,具体表现如下:

.item {
  order: 0;
}

flex-grow

flex-grow 属性定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大,具体表现如下:

.item {
  flex-grow: 0;
}

flex-shrink

flex-shrink 属性定义了项目的缩小比例,默认为 1,即如果空间不足,该项目将缩小,具体表现如下:

.item {
  flex-shrink: 1;
}

flex-basis

flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size),默认值为 auto,即项目的本来大小,浏览器根据这个属性计算主轴是否有多余空间。

.item {
  flex-basis: auto;
}

flex

flex 属性是 flex-grow, flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto,后两个值可选,不设置则为默认值。该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

.item {
  flex: none;
}

align-self

align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。

Can I Use Flex
flex-direction
flex-wrap
justify-content
align-items
align-content
order
flex-grow
flex-shrink
align-self