# 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-容器中行與列之間的間距