## 20.3.1.基本概念
彈性布局是指,可以設定一個容器盒子中的若干個(數量可變的)子盒子,在父盒子中的橫向或縱向有序整齊排列。其典型應用就是頁面中的導航布局的實現,如下圖所示:

彈性布局的實現,主要是在父盒子(容器盒子)上定義相應的屬性,則其內部的子盒子就能夠按照所定義的樣式進行顯示。
## 20.3.2.主要屬性
彈性布局的主要屬性設置包括如下幾個:
* display: flex;
說明:設置盒子的顯示模式為彈性盒模型,即該盒子成為了彈性盒模式的容器盒子。
* flex-direction:
說明:設置彈性盒模式的子盒子的排列方式,有如下4個方式(4個屬性值):
row:橫向排列,
row-reverse:橫向排列,但順序反向
column:縱向排列
column-reverse:縱向排列,但順序反響
* flex-wrap:
說明:設置彈性盒模式的子盒子超出時的換行特性,常用屬性值有:
nowrap:不換行,盡量在一行顯示,這是默認值。
此時有可能會超出父盒子(當子盒子有最小寬度設置時)。
wrap:自動換行。
wrap-reverse:換行,但反向顯示(即其實顯示到上一行去了)
* justify-content:

說明:設置子盒子的主軸方向的一行中的排布方式。
所謂主軸就是由flex-direction所決定的方向為主軸,對應另一個方向為輔軸。
假如flex-direction為row或row-reverse,則橫向為主軸,縱向為輔軸。
假如flex-direction為column或column-reverse,則縱向為主軸,橫向為輔軸。
常用屬性值有:
flex-start:子盒子從所設定的起始位置開始排列出來,空隙留后面;
flex-end:子盒子從所設定的終止位置開始排列出來,空隙留前面;
center:子盒子完全從居中的位置開始排列出來,空隙留兩邊;
space-between:子盒子兩邊緊靠父盒子,空隙留在相互的中間且均等;
space-around:子盒子均衡布置,分布給每個盒子的空隙都一樣。
圖示如下:

兩個重要概念:主軸,輔軸


* align-content:
說明:設置子盒子在輔軸方向的排布方式,大于一行且輔軸有多余空間時時才有效。
常用的屬性值有:
flex-start:子盒子從所設定的起始位置開始排列出來,空隙留后面;
flex-end:子盒子從所設定的終止位置開始排列出來,空隙留前面;
center:子盒子完全從居中的位置開始排列出來,空隙留兩邊;
space-between:子盒子兩邊僅靠父盒子,空隙留在相互的中間;
space-around:子盒子均衡布置,空隙均衡出現;
圖示如下:

* align-items:

說明:設置子盒子在當前行中輔軸方向的對齊方式。
flex-start:子盒子定位于所設定的起始位置,空隙留后面;
flex-end:子盒子定位于設定的終止位置,空隙留前面;
center:子盒子定位于居中的位置,空隙留兩邊;
baseline:子盒子定位于基準位置;
stretch:子盒子進行拉伸(充滿縱軸);

## 20.3.3.應用案例
實現類似如下網頁效果的版面布局:

代碼如下:
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
font-size:14px;
color:black;
list-style: none;
}
.page{
width:90%;
min-width:600px;
border:solid 1px red;
margin:0 auto;
}
nav ul{
display: flex;
justify-content:space-between;
background: gray;
margin:2px 0;
}
nav ul li{
background: purple;
}
.body{
display: flex;
}
.body>.left,
.body>.right{
width:200px;
background: yellow;
}
.body>.center{
background: pink;
border:solid 1px blue;
margin:0 15px;
/*這就是關鍵所在!!!*/
width:100%;
}
.body>.center>.c2,
.body>.center>.c4
{
display: flex;
justify-content:space-between;
}
.body>.center>.c2>div{
width:49%;
border:solid 1px green;
}
.body>.center>.c4>div{
width:32.5%;
background: orange;
}
</style>
</head>
<body>
<div class="page">
<header>頭部</header>
<nav>
<ul>
<li>首頁</li>
<li>關于我們</li>
<li>新聞公告新聞公告</li>
<li>產品介紹</li>
<li>客戶服務</li>
</ul>
</nav>
<div class="body">
<div class="left">左</div>
<div class="center">
<div class="c1">中間1</div>
<div class="c2">
<div>c2a</div>
<div>c2b</div>
</div>
<div class="c3">中間2</div>
<div class="c4">
<div>c4a</div>
<div>c4b</div>
<div>c4c</div>
</div>
<div class="c5">中間3</div>
</div>
<div class="right">右</div>
</div>
<footer>底部</footer>
</div>
</body>
</html>
```
- 1、相關介紹
- 1.1.關于全棧學科
- 1.2.全棧工程師與全棧開發
- 1.3.基本技能
- 1.4.學習方法
- 2、html初步
- 2.1.什么是網頁和網站
- 2.2.網頁瀏覽原理
- 2.3.什么是html
- 2.4.html基本知識
- 2.5.綜合案例
- 3、html結構標簽
- 3.1.文檔級結構標簽
- 3.2.內容級結構標簽
- 3.3.塊標簽和行內標簽
- 4、html文本標簽
- 5、html列表標簽
- 5.1.無序列表ul>li
- 5.2.有序列表ol>li
- 5.3.定義列表dl>dt,dd
- 6、html圖像標簽
- 6.1.網頁路徑問題
- 7、html鏈接標簽
- 7.1.超鏈接
- 7.2.錨鏈接
- 7.3.link標簽
- 8、html表格標簽
- 8.1.表格初步
- 8.2.表格高級
- 8.3.表格案例
- 9、html表單標簽
- 9.1.表單初步
- 9.2.表單標簽詳解
- 9.3.表單和表格綜合案例
- 10、html5新增標簽與屬性
- 10.1.一些新增標簽
- 10.2.一些新增input類型
- 10.3.一些新增屬性
- 11、其他零碎及相關知識
- 11.1.meta標簽(元信息標簽)
- 11.2.網頁的字符編碼問題
- 11.3.特殊字符——字符實體
- 11.4.文檔類型(了解)
- 11.5.內嵌框架標簽iframe(了解)
- 12、CSS的引入
- 12.1.CSS引入
- 12.2.什么是css?
- 12.3.為什么需要css?
- 13、css入門
- 13.1.css樣式分類(根據css代碼位置分)
- 13.2.css基本語法
- 13.3.css簡單的選擇器
- 13.4.css屬性
- 13.5.css入門綜合案例
- 14、選擇器詳解
- 14.1.選擇器綜述
- 14.2.基礎選擇器
- 14.3.關系選擇器
- 14.4.屬性選擇器
- 14.5.偽類選擇器
- 14.6.偽元素選擇器
- 14.7.常見選擇器的組合
- 14.8.css樣式的特性
- 15、有關文字的屬性
- 15.1.字體屬性
- 15.2.文本屬性
- 16、有關盒子的屬性
- 16.1.盒子概述
- 16.2.盒子的寬高屬性width和height
- 16.3.邊框屬性border
- 16.4.內邊距屬性padding
- 16.5.外邊距屬性margin
- 16.6.背景屬性background
- 16.7.輪廓屬性outline
- 16.8.盒子綜合案例
- 17、有關布局的屬性
- 17.1.布局屬性
- 17.2.頁面布局應用
- 18、定位屬性
- 19、列表與表格樣式
- 19.1.列表樣式
- 19.2.表格樣式
- 20、CSS3高級特性
- 20.1.盒子新特性
- 20.2.多欄布局column
- 20.3.彈性布局flex
- 20.4.2D變換transform(2D)
- 20.5.3D變換transform(3D)
- 20.6.過渡效果transition
- 20.7.動畫效果animation
- 21、零碎或補遺或經驗
- 21.1.光標形狀設置cursor
- 21.2.盒子縮放zoom
- 21.3.文字陰影text-shadow
- 21.4.文字溢出text-overflow
- 21.5.盒子模型box-sizing
- 21.6.css初始化
- 21.7.css精靈技術
- 21.8.自定義字體