Flex 布局(一)

认识 Flex

背景

目前主要的前端布局方案主要有三种:

  • 传统布局方案(通过浮动、定位等方式实现)
  • Flex 布局方案
  • Grid 布局方案

传统的布局方案,需要熟练掌握元素的分类及布局特性、浮动原理和定位原理等基础知识,学习成本较大,实现的复杂度也比较高。
Flex 布局方案,真是为了解决传统布局方案的不变,而提出的一种新型布局方案,只需要简单通过对父元素和子元素相关规则配置就能实现效果。
Flex 布局的主要思想是使父元素能够调节子元素的高度、宽度和排布的顺序,从而能够最好地适应可用布局空间(能够适应不同的设备和不同大小的屏幕)。设定为flex布局的元素能够放大子元素使之尽可能填充可用空间,也可以收缩子元素使之不溢出。与传统布局中块状元素按照垂直方向摆放,行内元素按照水平方向摆放相比,Flex 布局是无方向的,传统布局在应对大型复杂的布局时缺乏灵活性,特别是在改变方向、改变大小、伸展、收缩等等方面。
Flex 布局适合小规模的布局方案,而 Grid 布局方案适合大规模的布局方案。
Flex 布局的兼容性:
支持的浏览器
总的来说,Flex 布局方案是未来的首选布局方案。

基本概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称为“容器”。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称”项目”。
flex 布局
容器中存在两条轴:主轴(main axis) 和 交叉轴(cross axis)。主轴 开始的位置为 main start,结束的位置为 main end;交叉轴开始的位置为 cross start ,结束的位置为 cross end
项目默认沿主轴排列。单个项目占据的主轴空间叫做 main size,占据的交叉轴空间叫做 cross size
相关概念:

  • main axis:Flex 容器的主轴。主要用来配置 Flex 项目。注意,它不一定是水平的,主要取决于 flex-direction 属性。
  • main start | main end:Flex 项目的配置从容器的主轴起点边开始,往主轴终点边结束。
  • main size:Flex项目的在主轴方向的宽度或高度就是项目的主轴长度,Flex项目的主轴长度属性是width或height属性,由哪一个对着主轴方向决定。
  • cross axis:与主轴垂直的轴称作侧轴,是侧轴方向的延伸。
  • cross start | cross end:伸缩行的配置从容器的侧轴起点边开始,往侧轴终点边结束。
  • cross size:Flex 项目在侧轴方向的宽度或高度就是项目的侧轴长度,Flex项目的侧轴长度属性为width或height属性,有哪一个对着侧轴方向决定。

Flex 属性

Flex 属性主要分为两种,Flex 容器属性Flex 项目属性。父容器可以设置子容器的排列方式,子容器也可以单独设置自身的排列方式,如果两者同时设置,以子容器的设置为准。
Flex 容器属性:

  • flex-direction
  • flex-warp
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex 容器属性

Flex 项目属性

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

flex 项目属性

参考资料

CSS Flexible Box Layout
Flex 布局教程:语法篇
一个完整的Flexbox指南
一劳永逸的搞定 flex 布局

谢谢打赏
0%