ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# flex 项目缩放的简写 ## 1. `flex`属性 - 项目放大,缩小与计算尺寸,对于项目非常重要,也很常用 - 每次都要写这三个属性,非常的麻烦,且没有必要 - `flex`属性,可以将以上三个属性进行简化: - 语法: `flex: flex-grow flex-shrink flex-basis` ### 1.1 三值语法 | 序号 | 属性值 | 描述 | | ---- | ------------------ | ------------- | | 1 | 第一个值: 整数 | `flex-grow` | | 2 | 第二个值: 整数 | `flex-shrink` | | 3 | 第三个值: 有效宽度 | `flex-basis` | 举例: | 序号 | 案例 | 描述 | | ---- | ----------------- | ------------------------------- | | 1 | `flex: 0 1 auto` | 默认值: 不放大,可收缩, 初始宽度 | | 2 | `flex: 1 1 auto` | 项目自动放大或收缩适应容器 | | 3 | `flex: 0 0 100px` | 按计算大小填充到容器中 | ### 1.2 双值语法 | 序号 | 属性值 | 描述 | | ---- | ------------------ | ------------ | | 1 | 第一个值: 整数 | `flex-grow` | | 3 | 第二个值: 有效宽度 | `flex-basis` | 举例: | 案例 | 描述 | | --------------- | ------------------------------- | | `flex: 0 180px` | 禁止放大,按计算大小填充到容器中 | ### 1.3 单值语法 | 序号 | 属性值 | 描述 | | ---- | -------- | ----------------------- | | 1 | 整数 | `flex-grow` | | 2 | 有效宽度 | `flex-basis` | | 3 | 关键字 | `initial | auto | none` | 举例: | 序号 | 案例 | 描述 | | ---- | ------------- | ----------------- | | 1 | `flex: 1` | `flex: 1 1 auto` | | 2 | `flex: 180px` | `flex: 1 1 180px` | | 3 | `initial` | `flex: 0 1 auto` | | 4 | `auto` | `flex: 1 1 auto` | | 5 | `none` | `flex: 0 0 auto` | > 推荐使用`flex`, 就像推荐使用`flex-grow`设置主轴与换行一样 ## 2. 示例 ![](https://img.kancloud.cn/7a/12/7a122d30f71cd777999eda66f9d99ec0_382x217.jpg) ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>flex 项目缩放的简写</title> <style> /* 容器尺寸 */ .container { width: 300px; height: 150px; } /* flex容器 */ .container { display: flex; } /* flex项目 */ .item { width: 50px; height: 50px; background-color: lightcyan; font-size: 1.5rem; } /* flex项目缩放的简写 */ /* 三值语法: flex: grow shrink basis */ .item:first-of-type { background-color: lightgreen; /* 默认: 不放大,可收缩, 原始大小 */ flex: 0 1 auto; /* 项目自动放大或收缩自适应容器变化 */ /* 此时,第一个项目flex-grow:1,占据主轴所有剩余空间200px*/ flex: 1 1 auto; /* 按指定宽度计算项目占据的主轴空间: 80px, 而不是50px */ flex: 0 0 80px; } /* 双值语法: flex: grow basis) */ .item:nth-of-type(2) { background-color: yellow; /* 不放大,计算宽度为100px */ flex: 0 100px; } /* 单值语法: flex: grow | basis | 关键字*/ .item:last-of-type { background-color: lightskyblue; /* 自动获取剩余空间 */ flex: auto; /* 等价于 */ flex: 1; /* 项目大小初始化*/ flex: initial; /*等价于重置为默认值 */ flex: 0 1 auto; /* 项目禁止缩放 */ flex: none; /* 等价于 */ flex: 0 0 auto; /* 看不出效果是因为当前项目宽度不够 */ flex: 0 0 250px; /* 如果想自动收缩适应容器,更改第二个参数*/ flex: 0 1 250px; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html> ```