# Flex 布局是什么?
[TOC]
## Flex 简介
* Flex 是 **Flexible Box**的缩写, 意思是"**弹性布局**", 用来为盒状模型提供最大的布局灵活性
* 任何一个容器都可以设置为`Flex`布局模式
```css
/* 块元素可以设置为Flex容器 */
.container {
display: flex;
}
/*内联元素也可以设置为Flex*/
span {
display: inline-flex;
}
/* WebKit内核浏览器,如Safari, 需要加前缀*/
div {
display: -webkit-flex; /*Safari*/
display: lfex;
}
```
* 一旦设置为Flex容器, 则容器内子元素的`float`, `clear`, `vertical-align`属性全部失去意义, 没有效果了
* 由此可见, **Flex布局**的目标明确, 就是要把**Float布局**拍死在沙滩上
## Tips: 布局演变史
### 1. 表格布局`table`
* 世界第一个网页诞生于1990年12月20日, 依赖HTML中的`<table>`标签来实现
* 页面随着内容的不断增加, 会变更越来越臃肿, 难以维护
### 2. 定位布局`positon`
* 随着页面复杂度的不断提升, 更多的属性被添加到HTML, CSS中
* 其中, CSS中的`position`属性具有革命性
* 使页面中的元素可以摆脱表格单元格的束缚,可以定位到窗口中的任何位置
### 3. 浮动布局`float`
* 浮动`float`技术的初衷并不是为了布局, 而是用来处理文本与图片的排版问题
* 因为任何元素一旦浮动就会变成块元素,从而可以设置宽高, 非常适合页面布局
* 所以, 网页设计师就使用`float`再配合`<div>`,`<span>`,几乎可以完全任何页面布局
* 但是元素浮动后, 为了防止对它后面的同级元素产生影响, 就必须清除浮动`clear`
* 另外, 当元素之间具有层级关系时, 子元素的浮动会导致父元素失去高度
* 当然浮动千万的问题远不止以上几点,所以,业界一直在寻求一种真正布局技术
### 4. 弹性布局`flex`
* 我们知道,浮动布局很容易实现元素水平居中, 但是垂直居中就非常的困难,实现起来很麻烦
* 用浮动技术来进行网页布局,是一种"无心插柳柳成萌"的结果, 算是一种巧合吧
* 使用Flex弹性布局, 就是针对浮动布局的所有痛点而生, 元素浮动的后遗症全部解决
* 所以在Flex容器中, 不能,也没必要更使用`float`属性,没了浮动当然也不再需要`clear`
* Flex有自己的元素垂直对齐解决方案, 所以`vertical-align`属性也失效
### 5. 网格布局`grid`
* 不得不说, 世间万物就是一个轮回, 曾经那么令人不堪的表格布局,居然回归了
* 表格布局尽管有那么多的缺点,但是它的优势也非常明显,就是简单, 直观
* 其实就这一条, 就足以征服所以设计师,**简单直观**难道不是我们一直追求的目标吗?
* 如果有一种布局方式, 即有表格的简单直观, 又有弹性盒子的友好体贴, 那该有多好?
* 这个愿意现在终于实现了, **网格布局(Grid)**横空出世
* 网格布局集美貌与智慧于一身, 同时具备了表格布局与弹性布局的所有优点
* 这么好的东西, 可惜很多浏览器支持情况不乐观, 移动端支持好一些
* 但相信, 会有越来越多的浏览器加入到网格布局的行列中, 大家现在学习正当时
> Tips: 布局演变史: 表格(table) ==> 定位(position) ==> 浮动(float) ==> 弹性(flex) ==> 网格(grid, 发展中...)
- 教学大纲
- HTML5基础
- 1-html基础知识
- 2-语义化结构元素
- 3-语义化文本元素
- 4-链接/列表/图像元素
- 5-表格元素
- 6-表单与控件元素[重点]
- CSS3基础
- 1-css与html文档
- 2-css选择器
- 3-细说盒模型
- Flex布局[精简版]
- 1-Flex概论
- 2-Flex布局是什么
- 3-Flex基本概念
- 4-Flex容器属性
- 5-Flex项目属性
- Flex布局[细说版]
- 1-flex 布局概述
- 2-flex 容器与项目
- 3-flex 容器主轴方向
- 4-flex 容器主轴项目换行
- 5-flex 容器主轴与项目换行简写
- 6-flex 容器主轴项目对齐
- 7-flex 容器交叉轴项目对齐
- 8-flex 多行容器交叉轴项目对齐
- 9-flex 项目主轴排列顺序
- 10-flex 项目交叉轴单独对齐
- 11-flex 项目放大因子
- 12-flex 项目收缩因子
- 13-flex 项目计算尺寸
- 14-flex 项目缩放的简写
- Flex布局[案例版]
- 1-调整项目顺序
- Grid布局[精简版]
- 1. 常用术语
- 2. 容器属性
- 3. 项目属性
- 4. 布局实例
- 1. 经典三列布局
- 2. 媒体查询
- Grid布局[细说版]
- 1-必知术语
- 2-容器创建与行列划分
- 3-单元格常用单位
- 4-项目填充到单元格
- 5-项目填充到网格区域
- 6-对齐容器中的所有项目
- 7-对齐单元格中所有项目
- 8-对齐单元格中某个项目
- 9-容器中行与列之间的间距