Blogger Information
Blog 15
fans 2
comment 0
visits 35330
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
flex布局(主轴方向 、主轴项目对齐方式 、交叉轴项目对齐 、项目顺序 、项目独立对齐方向 )
w™下載一個妳
Original
14207 people have browsed it

flex 布局概述

flex 是什么

  • flex 是 Flexible Box 的缩写,意为弹性布局
  • flex 2009 年就已出现,浏览器兼容性很好,请放心使用

flex 解决了什么问题

  • 块元素的垂直居中, flex 可以轻松解决
  • 元素大小在容器中的自动伸缩,以适应容器的变化,特别适合移动端布局

项目的布局方向是什么

  • 一个物体在一个平面中, 要么水平排列, 要么垂直排列, flex 借鉴了这个思想
  • flex 是一维布局, 项目任何时候只能沿一个方向排列,要么水平, 要么垂直
  • flex 项目排列的方向, 称为主轴, 水平和垂直二种
  • 与主轴垂直的称为交叉轴(有的教程也称之为副轴/侧轴)

flex 布局中常用术语有哪些(三个二)

序号 简记 术语
1 二成员 容器和项目(container / item)
2 二根轴 主轴与交叉轴(main-axis / cross-axis)
3 二根线 起始线与结束线(`

1.flex 容器与项目

1.1. display属性

序号 属性值 描述 备注
1 flex; 创建 flex 块级容器 内部子元素自动成为 flex 项目
2 inline-flex; 创建 flex 行内容器 内部子元素自动成为 flex 项目

1.2. flex 容器与项目特征

序号 容器/项目 默认行为
1 容器主轴 水平方向
2 项目排列 沿主轴起始线排列(当前起始线居左)
3 项目类型 自动转换”行内块级”元素,不管之前是什么类型
4 容器主轴空间不足时 项目自动收缩尺寸以适应空间变化,不会换行显示
5 容器主轴存在未分配空间时 项目保持自身大小不会放大并充满空间

1.3. 创建容器与项目:

效果图:


代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Document</title>
  7. <style>
  8. /* 容器 */
  9. .container {
  10. width: 300px;
  11. height: 150px;
  12. }
  13. /* 将容器/父元素设置为flex容器 */
  14. .container {
  15. display: flex;
  16. /* display: inline-flex; */
  17. }
  18. /* 项目/子元素 */
  19. .item {
  20. width: 100px;
  21. height: 50px;
  22. background-color: rgb(255, 230, 0);
  23. font-size: 1rem;
  24. text-align: center;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div class="container">
  30. <div class="item">项目1</div>
  31. <div class="item">项目2</div>
  32. <div class="item">项目3</div>
  33. <div class="item">项目4</div>
  34. </div>
  35. </body>
  36. </html>

2.flex 容器主轴方向

2.1. flex-direction属性

序号 属性值 描述
1 row默认值 主轴水平: 起始线居中,项目从左到右显示
2 row-reverse 主轴水平:起始线居右, 项目从右向左显示
3 column 主轴垂直: 起始线居上,项目从上向下显示
4 column-reverse 主轴垂直: 起始线居下,项目从下向上显示

2.2主轴方向演练效果图:

项目从右往左排列:

项目垂直从小到大排列:

项目垂直从大到小排列:

2.3主轴方向演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>主轴方向</title>
  7. <style>
  8. /* 容器 */
  9. .container {
  10. width: 300px;
  11. height: 150px;
  12. }
  13. /* 将容器/父元素设置为flex容器 */
  14. .container {
  15. display: flex;
  16. /* display: inline-flex; */
  17. }
  18. /* 主轴方向:所有的项目必须沿主轴排列 */
  19. .container {
  20. /* 默认主轴为水平,行的方向 */
  21. flex-direction: row;
  22. /* 项目从右往左排列 */
  23. flex-direction: row-reverse;
  24. /* 项目垂直从小到大排列 */
  25. flex-direction: column;
  26. /* 项目垂直从大到小排列 */
  27. flex-direction: column-reverse;
  28. }
  29. /* 项目/子元素 */
  30. .item {
  31. width: 100px;
  32. height: 50px;
  33. background-color: rgb(206, 209, 27);
  34. font-size: 1.5rem;
  35. text-align: center;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="container">
  41. <div class="item">1</div>
  42. <div class="item">2</div>
  43. <div class="item">3</div>
  44. <div class="item">4</div>
  45. </div>
  46. </body>
  47. </html>

3.flex 容器主轴项目换行

3.1. flex-wrap属性

序号 属性值 描述
1 nowrap默认值 项目不换行: 单行容器
2 wrap 项目换行: 多行容器,第一行在上方
3 wrap-reverse 项目换行: 多行容器,第一行在下方

3.2主轴方向演练效果图:

主轴上的项目不允许换行:

主轴上的项目允许换行:

主轴上的项目项目反向排列:

3.3主轴方向演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>主轴方向</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. /* 将容器、父元素设置为flex容器 */
  13. .container {
  14. display: flex;
  15. /* display: inline-flex */
  16. }
  17. /* 主轴方向:所有的项目必须沿主轴排列 */
  18. .container {
  19. /* 默认主轴为水平,行的方向 */
  20. flex: -diretion:row;
  21. }
  22. /* 主轴上的项目换行显示 */
  23. .container {
  24. flex-wrap: nowrap;
  25. /* 如果允许换行,当前容纳不下的项目会换行显示,此时创建的容器 */
  26. flex-wrap: wrap;
  27. /* 项目反向排列 */
  28. flex-wrap: wrap-reverse;
  29. }
  30. .item {
  31. width: 100px;
  32. height: 50px;
  33. background-color: chartreuse;
  34. font-size: 1.5rem;
  35. text-align: center;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="container">
  41. <div class="item">1</div>
  42. <div class="item">2</div>
  43. <div class="item">3</div>
  44. <div class="item">4</div>
  45. </div>
  46. </body>
  47. </html>

4.flex 容器主轴与项目换行简写

4.1. flex-flow属性

  • flex-flow是属性flex-direction(当前的主轴方向)和flex-wrap(项目是否换行)的简写
  • 语法: flex-flow: flex-direction flex-wrap
属性值 描述
row nowrap默认值 主轴水平, 项目不换行

以后推荐只用它

4.2 容器主轴与项目换行简写代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>主轴方向与是否换行的简写</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. /* 将容器父元素设置为flex容器 */
  13. .container {
  14. display: flex;
  15. }
  16. /* 主轴方向:所有的项目必须沿主轴排列 */
  17. .container {
  18. /* `默认值 | 主轴水平, 项目不换行 */
  19. flex -flow:row nowrap;
  20. /* 主轴水平, 项目允许换行 */
  21. flex-flow:row wrap;
  22. /* 以列排列, 项目不允许换行 */
  23. /* flex-flow:column nowrap; */
  24. /* 以列排列, 项目允许换行 */
  25. /* flex-flow: column wrap; */
  26. }
  27. /* 简写 */
  28. .item {
  29. width: 100px;
  30. height: 50px;
  31. font-size: 1.5rem;
  32. background-color: chocolate;
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <div class="container">
  38. <div class="item">1</div>
  39. <div class="item">2</div>
  40. <div class="item">3</div>
  41. <div class="item">4</div>
  42. </div>
  43. </body>
  44. </html>

5.flex 容器主轴项目对齐

5.1. justify-content属性

当容器中主轴方向上存在剩余空间时, 该属性才有意义

序号 属性值 描述
1 flex-start默认 所有项目与主轴起始线对齐
2 flex-end 所有项目与主轴终止线对齐
3 center 所有项目与主轴中间线对齐: 居中对齐
4 space-between 两端对齐: 剩余空间在头尾项目之外的项目间平均分配
5 space-around 分散对齐: 剩余空间在每个项目二侧平均分配
6 space-evenly 平均对齐: 剩余空间在每个项目之间平均分配

5.2. flex 容器主轴项目对齐演练效果图:

主轴起始线对齐:

终止线对齐:

居中对齐:

两端对齐:

分散对齐:

平均对齐:

5.3. flex 容器主轴项目对齐演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>主轴项目对齐方式</title>
  7. </head>
  8. <style>
  9. .container {
  10. width: 300px;
  11. height: 150px;
  12. }
  13. .container {
  14. display: flex;
  15. }
  16. .item {
  17. width: 50px;
  18. height: 50px;
  19. font-size: 1.5rem;
  20. background-color: chocolate;
  21. }
  22. .container {
  23. /* 主轴起始线对齐 */
  24. justify-content: flex-start;
  25. /* 终止线对齐 */
  26. justify-content: flex-end;
  27. /* 居中对齐 */
  28. justify-content: center;
  29. /* 两端对齐 */
  30. justify-content: space-between;
  31. /* 分散对齐 */
  32. justify-content: space-around;
  33. /* 平均对齐 */
  34. justify-content: space-evenly;
  35. }
  36. </style>
  37. <body>
  38. <div class="container">
  39. <div class="item">1</div>
  40. <div class="item">2</div>
  41. <div class="item">3</div>
  42. <div class="item">4</div>
  43. </div>
  44. </body>
  45. </html>

6.flex 容器交叉轴项目对齐

6.1. align-items属性

  • 该属性仅适用于: 单行容器
  • 当容器中交叉轴方向上存在剩余空间时, 该属性才有意义
序号 属性值 描述
1 flex-start默认 与交叉轴起始线对齐
2 flex-end 与交叉轴终止线对齐
3 center 与交叉轴中间线对齐: 居中对齐

5.2. flex 容器交叉轴项目对齐演练效果图:

默认与交叉轴起始线对齐:

与交叉轴终止线对齐:

与交叉轴中间线居中对齐:

5.3. flex 容器交叉轴项目对齐演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>交叉轴项目对齐</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. .container {
  13. display: flex;
  14. }
  15. .container {
  16. /* 默认与交叉轴起始线对齐 */
  17. align-items: flex-start;
  18. /* 与交叉轴终止线对齐 */
  19. align-items: flex-end;
  20. /* 与交叉轴中间线居中对齐 */
  21. align-items: center;
  22. }
  23. .item {
  24. width: 50px;
  25. height: 50px;
  26. background-color: chocolate;
  27. font-size: 1.5rem;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class="container">
  33. <div class="item">1</div>
  34. <div class="item">2</div>
  35. <div class="item">3</div>
  36. <div class="item">4</div>
  37. </div>
  38. </body>
  39. </html>

7.flex 多行容器交叉轴项目对齐

7.1. align-content属性

  • 该属性仅适用于: 多行容器
  • 多行容器中, 交叉轴会有多个项目, 剩余空间在项目之间分配才有意义
序号 属性值 描述
1 stretch默认 项目拉伸占据整个交叉轴
1 flex-start 所有项目与交叉轴起始线(顶部)对齐
2 flex-end 所有项目与交叉轴终止线对齐
3 center 所有项目与交叉轴中间线对齐: 居中对齐
4 space-between 两端对齐: 剩余空间在头尾项目之外的项目间平均分配
5 space-around 分散对齐: 剩余空间在每个项目二侧平均分配
6 space-evenly 平均对齐: 剩余空间在每个项目之间平均分配

提示: 多行容器中通过设置flex-wrap: wrap | wrap-reverse实现

5.2. flex 多行容器交叉轴项目对齐演练效果图:

自动拉伸 默认:

所有项目与交叉轴起始线(顶部)对齐:

所有项目与交叉轴终止线对齐:

所有项目与交叉轴中间线对齐: 居中对齐:

两端对齐: 剩余空间在头尾项目之外的项目间平均分配:

分散对齐: 剩余空间在每个项目二侧平均分配:

平均对齐: 剩余空间在每个项目之间平均分配:

5.2. flex 容器交叉轴项目对齐演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>交叉轴项目对齐方式</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. .item {
  13. width: 50px;
  14. height: 50px;
  15. font-size: 1.5rem;
  16. background-color: burlywood;
  17. }
  18. .container {
  19. display: flex;
  20. }
  21. .container {
  22. flex-flow: row wrap;
  23. /* 自动拉伸 默认*/
  24. align-content: stretch;
  25. /* 所有项目与交叉轴起始线(顶部)对齐 */
  26. align-content: flex-start;
  27. /* 所有项目与交叉轴终止线对齐 */
  28. align-content: flex-end;
  29. /* 所有项目与交叉轴中间线对齐: 居中对齐 */
  30. align-content: center;
  31. /* 两端对齐: 剩余空间在头尾项目之外的项目间平均分配 */
  32. align-content: space-between;
  33. /* 分散对齐: 剩余空间在每个项目二侧平均分配 */
  34. align-content: space-around;
  35. /* 平均对齐: 剩余空间在每个项目之间平均分配 */
  36. align-content: space-evenly;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <div class="container">
  42. <div class="item">1</div>
  43. <div class="item">2</div>
  44. <div class="item">3</div>
  45. <div class="item">4</div>
  46. <div class="item">5</div>
  47. <div class="item">6</div>
  48. <div class="item">7</div>
  49. <div class="item">8</div>
  50. <div class="item">9</div>
  51. </div>
  52. </body>
  53. </html>

8.flex 项目交叉轴单独对齐

8.1. align-self属性

  • 该属性可覆盖容器的align-items, 用以自定义某个项目的对齐方式
序号 属性值 描述
1 auto默认值 继承 align-items 属性值
2 flex-start 与交叉轴起始线对齐
3 flex-end 与交叉轴终止线对齐
4 center 与交叉轴中间线对齐: 居中对齐
5 stretch 在交叉轴方向上拉伸
6 baseline 与基线对齐(与内容相关用得极少)

8.2. flex 项目交叉轴单独对齐演练效果图:

分组的第一个子元素:

分组后的任意位置第二位:

分组后的任意位置第三位:

分组最后的一位:

8.3. flex 项目交叉轴单独对齐演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>项目顺序</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. .item {
  13. width: 50px;
  14. height: 50px;
  15. font-size: 1.5rem;
  16. background-color: cadetblue;
  17. order: 0;
  18. }
  19. .container {
  20. display: flex;
  21. }
  22. .item:first-of-type/*分组的第一个子元素*/ {
  23. order: 4;
  24. background-color: lightgreen;
  25. }
  26. .item:nth-of-type(2)/*分组后的任意位置第二位*/ {
  27. background-color: lightcoral;
  28. order: 3;
  29. }
  30. .item:nth-of-type(3)/*分组后的任意位置第三位*/ {
  31. background-color: rgb(68, 151, 12);
  32. order: 2;
  33. }
  34. .item:last-of-type/*分组最后的一位*/ {
  35. order: 1;
  36. background-color: red;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <div class="container">
  42. <div class="item">1</div>
  43. <div class="item">2</div>
  44. <div class="item">3</div>
  45. <div class="item">4</div>
  46. </div>
  47. </body>
  48. </html>

9.flex 项目放大因子

9.1. flex-grow属性

  • 在容器主轴上存在剩余空间时, flex-grow才有意义
  • 该属性的值,称为放大因子, 常见的属性值如下:
序号 属性值 描述
1 0默认值 不放大,保持初始值
2 initial 设置默认值,与0等效
3 n 放大因子: 正数

9.2 flex 项目放大因子演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>项目放大因子</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. .container {
  13. display: flex;
  14. }
  15. .item {
  16. width: 50px;
  17. height: 50px;
  18. font-size: 1.5rem;
  19. background-color: lightsalmon;
  20. /* 默认不放大 */
  21. flex-grow: initial;
  22. flex-grow: 0;
  23. }
  24. /*
  25. 主轴剩余空间 300 - 50*3 = 150px;
  26. 当前每个项目的放大因子是1, 一共3个项目,所以因子之和是3, 150 / 3 = 50
  27. 每一个项目分到了50px
  28. 再将每个项目在原宽度基础上增加50px, 得到新的宽度
  29. */
  30. .item:first-of-type /*分组中的第一个*/ {
  31. background-color: lightgreen;
  32. flex-grow: 1;
  33. }
  34. .item:nth-of-type(2)/*分组中的任意位置第二位*/ {
  35. background-color: lightcoral;
  36. flex-grow: 2;
  37. }
  38. .item:last-of-type/*分组中的最后一位*/ {
  39. background-color: wheat;
  40. flex-grow: 3;
  41. }
  42. /*
  43. 150px要分配给每个项目
  44. 放大因子之和: 150 / (1+2+3) = 25px;
  45. 每个项目根据自己的放大因子来分配
  46. 第一个因子是1, 分到1 * 25 =25, 50 + 25 = 75px
  47. 第二个因子是2, 分到2 * 25 = 50 , 50 +50 = 100px
  48. 第三个因子是3, 分到3*25 = 75px, 50 + 75px = 125px;
  49. */
  50. </style>
  51. </head>
  52. <body>
  53. <div class="container">
  54. <div class="item">1</div>
  55. <div class="item">2</div>
  56. <div class="item">3</div>
  57. </div>
  58. </body>
  59. </html>

10.flex 项目计算尺寸

10.1. flex-basis属性

  • 在分配多余空间之前,项目占据的主轴空间
  • 浏览器根据这个属性,计算主轴是否有多余空间
  • 该属性会覆盖项目原始大小(width/height)
  • 该属性会被项目的min-width/min-height值覆盖
序号 属性值 描述
1 auto 默认值: 项目原来的大小
2 px 像素
3 % 百分比

优先级: 项目大小 < flex-basis < min-width/height

10.2 flex 项目计算尺寸演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>项目在主轴上的计算宽度</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 150px;
  11. }
  12. .container {
  13. display: flex;
  14. flex-flow: row wrap;
  15. }
  16. .item {
  17. width: 50px;
  18. height: 50px;
  19. font-size: 1.5rem;
  20. background-color: cyan;
  21. }
  22. .item {
  23. /* auto==width */
  24. flex-basis: 70px;
  25. flex-basis: 20%;
  26. flex: basis:5rem;
  27. /* min-width/max-width权重大于flex-basis */
  28. max-width: 100px;
  29. flex-basis:150px;
  30. /* width < flex-basis < min/max-width */
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div class="container">
  36. <div class="item">1</div>
  37. <div class="item">2</div>
  38. <div class="item">3</div>
  39. </div>
  40. </body>
  41. </html>

11.flex 项目收缩因子

11.1. flex-shrink属性

  • 当容器主轴 “空间不足” 且 “禁止换行” 时, flex-shrink才有意义
  • 该属性的值,称为收缩因子, 常见的属性值如下:
序号 属性值 描述
1 1默认值 允许项目收缩
2 initial 设置初始默认值,与 1 等效
3 0 禁止收缩,保持原始尺寸
4 n 收缩因子: 正数

11.2flex 项目收缩因子演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>项目收缩因子</title>
  7. <style>
  8. .container {
  9. width: 180px;
  10. height: 150px;
  11. }
  12. .container {
  13. display: flex;
  14. /* 不换行 */
  15. flex-flow: row nowrap;
  16. }
  17. .item {
  18. width: 100px;
  19. height: 50px;
  20. font-size: 1.5rem;
  21. background-color: cyan;
  22. /* 禁止收缩 */
  23. flex-shrink: 0;
  24. }
  25. .item:first-of-type /* 第一个 */ {
  26. background-color: lightgreen;
  27. /* 默认值允许收缩 */
  28. flex-shrink: 1;
  29. }
  30. .item:nth-of-type(2) /* 第二个 */ {
  31. background-color: lightcoral;
  32. flex-shrink: 2;
  33. }
  34. .item:last-of-type {
  35. background-color: wheat;
  36. flex-shrink: 3;
  37. }
  38. /*
  39. 当前三个项目宽度超出了主轴空间多少: 300 - 180 = 120px, 说明有120px要让三个项目消化掉
  40. 三个项目的收缩因子之和: 6
  41. 每一份就是: 120 /6 = 20
  42. 第一个项目: 100 - 1 * 20 = 80px
  43. 第二个项目: 100 - 2* 20 = 60px
  44. 第三个项目: 100 - 2* 30 = 40px
  45. */
  46. </style>
  47. </head>
  48. <body>
  49. <div class="container">
  50. <div class="item">1</div>
  51. <div class="item">2</div>
  52. <div class="item">3</div>
  53. </div>
  54. </body>
  55. </html>

12.flex 项目缩放的简写

12.1. flex属性

  • 项目放大,缩小与计算尺寸,对于项目非常重要,也很常用
  • 每次都要写这三个属性,非常的麻烦,且没有必要
  • flex属性,可以将以上三个属性进行简化:
  • 语法: flex: flex-grow flex-shrink flex-basis

12.2 三值语法

序号 属性值 描述
1 第一个值: 整数 flex-grow
2 第二个值: 整数 flex-shrink
3 第三个值: 有效宽度 flex-basis

举例:

序号 案例 描述
1 flex: 0 1 auto 默认值: 不放大,可收缩, 初始宽度
2 flex: 1 1 auto 项目自动放大或收缩适应容器
3 flex: 0 0 100px 按计算大小填充到容器中

12.3 双值语法

序号 属性值 描述
1 第一个值: 整数 flex-grow
3 第二个值: 有效宽度 flex-basis

举例:

案例 描述
flex: 0 180px 禁止放大,按计算大小填充到容器中

12.4 单值语法

序号 属性值 描述
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设置主轴与换行一样

12.5 flex 项目缩放的简写演练代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>flex</title>
  7. <style>
  8. /* 容器 */
  9. .container {
  10. width: 300px;
  11. height: 150px;
  12. }
  13. /* 将容器/父元素设置为flex容器 */
  14. .container {
  15. display: flex;
  16. }
  17. /* 项目/子元素 */
  18. .item {
  19. width: 100px;
  20. height: 50px;
  21. background-color: cyan;
  22. font-size: 1.5rem;
  23. }
  24. .item:first-of-type {
  25. background-color: lightgreen;
  26. /* 默认:不放大,允许收缩, 以项目的width为准 */
  27. flex: 0 1 auto;
  28. flex: 1 1 auto;
  29. /* flex: 0 1 80px; */
  30. }
  31. .item:nth-of-type(2) {
  32. background-color: lightcoral;
  33. flex: 0 100px;
  34. }
  35. .item:last-of-type {
  36. background-color: wheat;
  37. flex: auto;
  38. flex: 1;
  39. flex: none;
  40. flex: 0 0 auto;
  41. flex: 0 0 250px;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <div class="container">
  47. <div class="item">1</div>
  48. <div class="item">2</div>
  49. <div class="item">3</div>
  50. </div>
  51. </body>
  52. </html>

学习总结:

  • 在本节课中学到了如何运用flex,它是一个容器,很神奇里面可以装很多项目。
  • 可以设置主轴交叉轴的排列方式,每设定一种排列方式就能得到不一样的效果,可以收缩项目达到想要大小尺寸。
  • 从中学到了如何去计算项目尺寸。
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:了解了基本属性后, 就应该找一些页面进行试水了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post