# Flex 项目属性
巧合的是, 在 Flex 项目也有 6 个可用的属性,他们分别是:
| 序号 | 属性 | 描述 |
| ---- | ----------- | ------------------------------------------------------------------------- |
| 1 | order | 定义项目排列顺序,索引越小超靠前,默认为 0 |
| 2 | flex-grow | 定义项目的放大比例,默认为 0 表示不放大, 即就算存在剩余空间也不放大 |
| 3 | flex-shrink | 定义了项目的缩小比例,默认为 1,即如何空间不足,则自动缩小项目来填充 |
| 4 | flex-basis | 定义了项目占据的主轴空间,默认值为 auto, 即项目原始大小 |
| 5 | flex | 是 flex-grow,flex-shrink,flex-basis 简写,默认值: 0 1 auto, 后二个属性可选 |
| 6 | align-self | 个性化定定制某单个项目的对齐方式,可覆盖容器`align-items`属性,默认 auto |
---
## 1. order
- 定义项目的排列顺序。数值越小,排列越靠前,默认为 0
- CSS 语法:
```css
.item {
order: integer;
}
```
- 示意图:
![](https://box.kancloud.cn/70f89eba41edc0a70278c44b74747294_751x480.png)
---
## 2. flex-grow
- 设置项目的放大比例, 默认为 0: 不放大,哪怕轴上有剩余空间
- CSS 语法:
```css
.item {
flex-grow: number; /* default: 0 */
}
```
- 空间分配方案小案例:
- `flex-grow: 1`: 每个项目等分, 都占全部的空间的 N 分之一(N: 项目数量)
- `flex-grow: 2`如果某个项目为 2, 其它项目为 1, 则它占据空间比其它项目多一倍
![](https://box.kancloud.cn/0c40e2971edc015685f43798e9a5b90f_802x211.png)
- flex 从剩余空间中分配项目所占的份数
- 前提是项目不要设置固定宽度, 由盒子在剩余空间中自动分配
- 每个盒子所在比例可以各不相同, 属性值必须是数值,整数小数都可以
- 如果盒子中存在有宽度的项目, 那么剩余空间应该减去它们
## 3. flex-shrink
- 设置了项目的缩小比例,默认为 1, 即空间不足时, 自动缩小填充
- CSS 语法:
```css
.item {
flex-shrink: number; /*defautl: 1*/
}
```
- 缩放规则
- `flex-shrink: 1`: 所有项目都为 1, 空间不足时, 自动等比例缩小填充主轴剩余空间
- `flex-shrink`: 如果有一个项目为 0, 其它项目为 1, 则空间不足时, 它并不随其它项目缩小
- 注意: 该属性不支持负值, 即`flex-shrink: -1` 无效
![](https://box.kancloud.cn/e24a8660e626cd488ee1e21645a92bb0_700x145.png)
---
## 4. flex-basis
- 定义了在计算分配主轴上剩余空间之前, 项目占据的主轴空间(main size)
- 浏览器根据该属性,可以计算出主轴上是否还有剩余空间, 决定是否换行
- 默认值为`auto`, 即项目原来占据的空间大小
- CSS 语法:
```css
.item {
flex-basis: length | auto; /* default auto */
}
```
你可以设置与`height`或者`width`属性一样的绝对值,例如`500px`,则该项目占据固定的空间大小
```css
.item {
flex-basis: 500px;
}
```
---
## 5. flex
- flex 属性是前面`flex-grow`,`flex-shrink`和`flex-basis`属性的简写
- 默认值: `0 1 auto`, 除第一个外, 其它二个可选
- CSS 语法:
```css
.item {
flex: none | [ < "flex-grow" > < "flex-shrink" >? || < "flex-basis" > ];
}
```
- 由于该属性极其常用, 为了简化, Flex 布局还为该属性设置了快捷值
- `flex: auto`: 等价于`flex: 1 1 auto`
- `flex: none`: 等价于`flex: 0 0 auto`
- 推荐优先使用 flex 属性, 由浏览器自动计算出其它属性的值
---
## 6. align-self
- 该属性允许单个项目有与其它项目不一样的对齐方式, 可覆盖掉容器的`flex-items`属性
- 默认值: `auto`,表示继承父元素的`align-items`,如果没有父元素,则等价于`stretch`
- CSS 语法:
```css
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
```
- 示意图:
![](https://box.kancloud.cn/0d93c40b34a77529f71ddd927dd49c82_743x390.png)
- 教学大纲
- 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-容器中行与列之间的间距