博客列表 >Grid 布局基础知识详解

Grid 布局基础知识详解

溪边小树
溪边小树原创
2020年04月15日 19:54:36427浏览

Grid 布局

准备工作

  • 编辑器: VSCODE
  • 浏览器: FireFox
  • 浏览器同步插件: Live Server

1. 基本术语

  • 容器: 使用网格布局的元素
  • 项目: 容器中的子元素
  • 网格线: 将容器划分为行与列的直线
  • 显式网络: 由用户根据项目数量指示容器生成的网格
  • 隐式网格: 由容器根据项目数量自动生成的网格
  • 单元格: 项目放置的具体空间
  • 网格区域: 一个以上的单元格组成的矩形区域

网格布局的基本步骤: 1. 生成网格; 2. 放置项目


2. 创建 Grid 容器

  • display: 声明使用网格布局的容器元素
  • grid-auto-flow: 声明项目在网格中自动填充方案(行优先/列优先)
  • grid-template-columns/rows: 在容器中显式地划分行与列,生成指定数量的单元格来放置项目
  • grid-auto-rows/columns: 根据项目数量,在容器中隐式生成行与列来放置它们

3. 设置单元格数量与尺寸

  • 固定宽度px: 固定大小
  • 百分比%: 以容器大小为依据来计算
  • 自动计算auto: 由浏览器决定长度
  • 比例fr: 将容器空间按比例分配给每一个单元格
  • 区间minmax(min,max): 设置单元格尺寸变化范围
  • 重复生成repeat(): 快速生成相同大小单元格的
  • 自动填充auto-fill: 单元格固定,但容器不确定时,可以让一行/列容纳尽可能多的项目

4. 将项目填充到指定单元格中

4.1 使用默认网格线划分单元格

  • 默认从左上角开始,从左到右,从上到下,依次从 1 开始编号
  • 如果从右下角开始,由下向上,由右向左,依次由从-1 开始编号
  • 根据数字网格线,可以将项目放到网格线形成的封闭矩形区域中

4.2 使用命名网格线划分单元格

  • 使用语义化的名称替代容器自动生成的数字网线线编号
  • 同一条网络线可以有多个别名

4.3 重复设置单元格时, 命名网格线会自动添加索引

  • repeat(3, [col-start] 100px [col-end]): 只需设置命名前缀,编号会自动生成
  • grid-column-end: col-end 3;: 前缀加索引就可以引用到自动生成的命名网格线

5. 将项目填充到网格区域中

5.1 默认网格区域

  • 设置项目属性grid-area: 将项目填充到指定容器的区域中
  • 语法: grid-area: 起始行 / 起始列 / 结束行 / 结束列

5.2 命名网格区域

  • 可以为每一个网格区域设置一个语义化的名称
  • 具有名称的网络区域称之为命名区域
  • 名称相同的网格区域会合并, 形成更大的区域空间
  • 项目设置的区域名称后,会自动填充到容器中应对的命名区域中

5.3 网格区域占位符

  • 当项目默认已到填充到正确的区域中,无需设置时,可使用”.”做为占位符

5.4 命名网格区域线默认名称

  • 区域起始行/列: 区域名称-start, 如header-start / header-start,表示区域起始行/区域起始列
  • 区域结束行/列: 区域名称-end,如header-end / header-end,表示区域结束行/区域结束列

6. 设置所有项目在容器中的对齐方式

  • justify-content: 设置所有项目在容器中水平方向的对齐方式
  • align-content: 设置所有项目在容器中垂直方向的对齐方式
  • place-content: 上面二个属性的简写, place-content: 垂直对齐方式 水平对齐方式

7. 设置所有项目在单元格或网格区域内的对齐方式

  • justify-items: 设置所有项目在单元格/网格区域中水平方向的对齐方式
  • align-items: 设置所有项目在单元格/网格区域中垂直方向的对齐方式
  • place-items: 上面二个属性的简写, place-items: 垂直对齐方式 水平对齐方式
  • demo11.html: 所有项目在单元格中的对齐方式

8. 设置某个项目在单元格或网格区域内的对齐方式

  • justify-self: 设置某个项目在单元格/网格区域中水平方向的对齐方式
  • align-self: 设置某个项目在单元格/网格区域中垂直方向的对齐方式
  • place-self: 上面二个属性的简写, place-self: 垂直对齐方式 水平对齐方式

9. 设置容器中行与列之间的间距/间隙

  • column-gap: 列间距
  • row-gap: 行间距
  • gap: 行间距 列间距: 简写
  • gap: 值: 行与列相等,可只写一个值

示例1

  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>创建grid容器</title>
  7. <style>
  8. .container {
  9. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. /* 设置项目在网格中的填充方案, 默认行优先 */
  16. grid-auto-flow: row;
  17. /* grid-auto-flow: column; */
  18. /* 显式地划分行与列, 三列二行 */
  19. grid-template-columns: 100px 100px 100px;
  20. grid-template-rows: 100px 100px;
  21. /* 对于放置不下的项目,会隐式生成单元格 */
  22. grid-auto-rows: auto;
  23. grid-auto-rows: 150px;
  24. }
  25. .item {
  26. background-color: lightblue;
  27. font-size: 2rem;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class="container">
  33. <div class="item item1">1</div>
  34. <div class="item item2">2</div>
  35. <div class="item item3">3</div>
  36. <div class="item item4">4</div>
  37. <div class="item item5">5</div>
  38. <div class="item item6">6</div>
  39. <div class="item item7">7</div>
  40. </div>
  41. </body>
  42. </html>

示例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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. /* 固定值 */
  16. grid-template-columns: 100px 100px 100px;
  17. grid-template-rows: 100px 100px 100px;
  18. /* 百分比 */
  19. grid-template-columns: 20% 30% auto;
  20. grid-template-rows: 100px auto 100px;
  21. /* 比例 */
  22. grid-template-columns: 1fr 2fr 2fr;
  23. grid-template-rows: 1fr auto 2fr;
  24. /* 重复设置 */
  25. grid-template-columns: repeat(3, 100px);
  26. grid-template-rows: repeat(3, 100px);
  27. /* 按分组来设置: (50px-100px) */
  28. /* 50px 100px 50px 100px */
  29. grid-template-columns: repeat(2, 50px 100px);
  30. /* 弹性 */
  31. grid-template-columns: repeat(2, minmax(50px, 100px));
  32. grid-template-rows: repeat(3, minmax(150px, 1fr));
  33. /* 自动填充 */
  34. grid-template-columns: repeat(auto-fill, 100px);
  35. grid-template-rows: repeat(auto-fill, 100px);
  36. }
  37. .item {
  38. background-color: lightblue;
  39. font-size: 2rem;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <div class="container">
  45. <div class="item item1">1</div>
  46. <div class="item item2">2</div>
  47. <div class="item item3">3</div>
  48. <div class="item item4">4</div>
  49. <div class="item item5">5</div>
  50. <div class="item item6">6</div>
  51. <div class="item item7">7</div>
  52. </div>
  53. </body>
  54. </html>

示例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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: repeat(4, 1fr);
  16. grid-template-rows: repeat(4, 1fr);
  17. }
  18. .item {
  19. font-size: 2rem;
  20. }
  21. .item.item1 {
  22. background-color: lightgreen;
  23. grid-row-start: 1;
  24. grid-row-end: 3;
  25. grid-column-start: 1;
  26. grid-column-end: 3;
  27. /* grid-row-start: -1;
  28. grid-row-end: -3;
  29. grid-column-start: -1;
  30. grid-column-end: -3; */
  31. /* grid-row-start: 2;
  32. grid-row-end: 4;
  33. grid-column-start: 2;
  34. grid-column-end: 4;
  35. grid-row-start: 1;
  36. grid-row-end: -1;
  37. grid-column-start: 1;
  38. grid-column-end: -1; */
  39. }
  40. /* 简写 */
  41. .item.item2 {
  42. background-color: lightpink;
  43. /* grid-row-start: 1;
  44. grid-row-end: 3;
  45. grid-column-start: 3;
  46. grid-column-end: 5; */
  47. grid-row: 1 / 3;
  48. grid-column: 3 / 5;
  49. }
  50. /* 使用偏移量来简化, 将第三个移动到左下角 */
  51. .item.item3 {
  52. background-color: yellow;
  53. /*grid-row-start: 3;
  54. grid-row-end: span 2;
  55. grid-column-start: 1;
  56. grid-column-end: span 2; */
  57. grid-row: 3 / span 2;
  58. grid-column: 1 / span 2;
  59. }
  60. .item.item4 {
  61. background-color: lightgrey;
  62. /* grid-row-start: 3; */
  63. grid-row-end: span 2;
  64. /* grid-column-start: 3; */
  65. grid-column-end: span 2;
  66. }
  67. </style>
  68. </head>
  69. <body>
  70. <div class="container">
  71. <div class="item item1">1</div>
  72. <div class="item item2">2</div>
  73. <div class="item item3">3</div>
  74. <div class="item item4">4</div>
  75. </div>
  76. </body>
  77. </html>

示例4

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: [c1-start] 100px [c1-end c2-start] 100px [c2-end c3-start] 100px [c3-end];
  16. grid-template-rows: [r1-start] 100px [r1-end r2-start] 100px [r2-end r3-start] 100px [r3-end];
  17. }
  18. .item {
  19. font-size: 2rem;
  20. }
  21. .item.item1 {
  22. background-color: lightgreen;
  23. /* 默认就是跨越一行/一列,所以可以省略 */
  24. grid-row-start: r2-start;
  25. grid-row-start: r1-end;
  26. grid-column-start: c3-start;
  27. }
  28. /* 简写 */
  29. .item.item2 {
  30. background-color: lightpink;
  31. /* grid-row: r1-start / r2-start;
  32. grid-column: c1-start / c3-end; */
  33. grid-column-end: span 3;
  34. }
  35. /* 使用偏移量来简化, 将第三个移动到左下角 */
  36. .item.item3 {
  37. background-color: yellow;
  38. grid-row-end: span 2;
  39. grid-column-end: span 2;
  40. }
  41. .item.item4 {
  42. background-color: lightgrey;
  43. }
  44. </style>
  45. </head>
  46. <body>
  47. <div class="container">
  48. <div class="item item1">1</div>
  49. <div class="item item2">2</div>
  50. <div class="item item3">3</div>
  51. <div class="item item4">4</div>
  52. </div>
  53. </body>
  54. </html>

示例5

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: repeat(4, 1fr);
  16. grid-template-rows: repeat(4, 1fr);
  17. }
  18. .item {
  19. font-size: 2rem;
  20. }
  21. .item.item1 {
  22. background-color: lightgreen;
  23. /* grid-area: 1 / 1 / 2 / 5; */
  24. /* 用偏移量进行简化 */
  25. /* grid-area: 1 / 1 / span 1 / span 4; */
  26. /* 是从当前位置开始的填充 */
  27. grid-area: span 1 / span 4;
  28. }
  29. /* 简写 */
  30. .item.item2 {
  31. background-color: lightpink;
  32. /* grid-area: 2 / 1 / 4 / 2; */
  33. /* grid-area: span 2 / span 1; */
  34. /* 默认就是偏移一行/一列 */
  35. grid-area: span 2;
  36. }
  37. /* 使用偏移量来简化, 将第三个移动到左下角 */
  38. .item.item3 {
  39. background-color: yellow;
  40. }
  41. .item.item4 {
  42. background-color: lightgrey;
  43. /* grid-area: row-start / col-start / row-end / col-end; */
  44. }
  45. .item.item5 {
  46. background-color: violet;
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <div class="container">
  52. <div class="item item1">1</div>
  53. <div class="item item2">2</div>
  54. <div class="item item3">3</div>
  55. <div class="item item4">4</div>
  56. <div class="item item5">5</div>
  57. </div>
  58. </body>
  59. </html>

示例6

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: 80px 1fr 80px;
  16. grid-template-rows: 40px 1fr 40px;
  17. /* 设置命名网格区域, 相同名称的命名区域会合并 */
  18. grid-template-areas:
  19. "hello hello hello"
  20. "left main right"
  21. "footer footer footer";
  22. }
  23. .item {
  24. font-size: 2rem;
  25. }
  26. .item.item1 {
  27. background-color: lightgreen;
  28. grid-area: hello;
  29. }
  30. /* 简写 */
  31. .item.item2 {
  32. background-color: lightpink;
  33. grid-area: left;
  34. }
  35. /* 使用偏移量来简化, 将第三个移动到左下角 */
  36. .item.item3 {
  37. background-color: yellow;
  38. grid-area: main;
  39. }
  40. .item.item4 {
  41. background-color: lightgrey;
  42. grid-area: right;
  43. }
  44. .item.item5 {
  45. background-color: violet;
  46. grid-area: footer;
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <div class="container">
  52. <div class="item item1">1</div>
  53. <div class="item item2">2</div>
  54. <div class="item item3">3</div>
  55. <div class="item item4">4</div>
  56. <div class="item item5">5</div>
  57. </div>
  58. </body>
  59. </html>

示例7

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: 80px 1fr 80px;
  16. grid-template-rows: 40px 1fr 40px;
  17. /* 设置命名网格区域, 相同名称的命名区域会合并 */
  18. grid-template-areas:
  19. "hello hello hello"
  20. ". . . "
  21. "footer footer footer";
  22. }
  23. .item {
  24. font-size: 2rem;
  25. }
  26. .item.item1 {
  27. background-color: lightgreen;
  28. grid-area: hello;
  29. }
  30. /* 简写 */
  31. .item.item2 {
  32. background-color: lightpink;
  33. /* 多余 */
  34. /* grid-area: left; */
  35. }
  36. /* 使用偏移量来简化, 将第三个移动到左下角 */
  37. .item.item3 {
  38. background-color: yellow;
  39. /* grid-area: main; */
  40. }
  41. .item.item4 {
  42. background-color: lightgrey;
  43. /* grid-area: right; */
  44. }
  45. .item.item5 {
  46. background-color: violet;
  47. grid-area: footer;
  48. }
  49. </style>
  50. </head>
  51. <body>
  52. <div class="container">
  53. <div class="item item1">1</div>
  54. <div class="item item2">2</div>
  55. <div class="item item3">3</div>
  56. <div class="item item4">4</div>
  57. <div class="item item5">5</div>
  58. </div>
  59. </body>
  60. </html>

示例8

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: 80px 1fr;
  16. grid-template-rows: 40px 1fr 40px;
  17. /* 设置命名网格区域, 相同名称的命名区域会合并 */
  18. grid-template-areas:
  19. "header header"
  20. ". . "
  21. "footer footer";
  22. }
  23. .item {
  24. font-size: 2rem;
  25. }
  26. .item.item1 {
  27. background-color: lightgreen;
  28. grid-area: header-start / header-start / header-end / header-end;
  29. }
  30. /* 简写 */
  31. .item.item2 {
  32. background-color: lightpink;
  33. /* 多余 */
  34. /* grid-area: left; */
  35. }
  36. /* 使用偏移量来简化, 将第三个移动到左下角 */
  37. .item.item3 {
  38. background-color: yellow;
  39. /* grid-area: main; */
  40. }
  41. .item.item4 {
  42. background-color: lightgrey;
  43. grid-area: footer-start / footer-start / footer-end / footer-end;
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <div class="container">
  49. <div class="item item1">1</div>
  50. <div class="item item2">2</div>
  51. <div class="item item3">3</div>
  52. <div class="item item4">4</div>
  53. </div>
  54. </body>
  55. </html>

示例9

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: repeat(3, 50px);
  16. grid-template-rows: repeat(3, 50px);
  17. justify-content: end;
  18. align-content: end;
  19. justify-content: center;
  20. align-content: center;
  21. justify-content: space-between;
  22. justify-content: space-around;
  23. justify-content: space-evenly;
  24. align-content: space-between;
  25. align-content: space-around;
  26. align-content: space-evenly;
  27. /* justify-content: stretch;
  28. grid-template-columns: repeat(3, auto);
  29. align-content: stretch;
  30. grid-template-rows: repeat(3, 1fr); */
  31. /* place-content: 垂直对齐 水平对齐; */
  32. place-content: center start;
  33. place-content: center center;
  34. place-content: center;
  35. }
  36. .item {
  37. background-color: violet;
  38. font-size: 2rem;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div class="container">
  44. <div class="item item1">1</div>
  45. <div class="item item2">2</div>
  46. <div class="item item3">3</div>
  47. <div class="item item4">4</div>
  48. <div class="item item1">5</div>
  49. <div class="item item2">6</div>
  50. <div class="item item3">7</div>
  51. <div class="item item4">8</div>
  52. <div class="item item4">9</div>
  53. </div>
  54. </body>
  55. </html>

示例10

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: repeat(3, 1fr);
  16. grid-template-rows: repeat(3, 1fr);
  17. justify-items: stretch;
  18. align-items: stretch;
  19. justify-items: start;
  20. align-items: center;
  21. justify-items: center;
  22. align-items: center;
  23. /* place-items: 垂直 水平; */
  24. place-items: start end;
  25. place-items: center center;
  26. place-items: center;
  27. }
  28. .item {
  29. width: 50px;
  30. height: 50px;
  31. background-color: violet;
  32. font-size: 2rem;
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <div class="container">
  38. <div class="item item1">1</div>
  39. <div class="item item2">2</div>
  40. <div class="item item3">3</div>
  41. <div class="item item4">4</div>
  42. <div class="item item1">5</div>
  43. <div class="item item2">6</div>
  44. <div class="item item3">7</div>
  45. <div class="item item4">8</div>
  46. <div class="item item4">9</div>
  47. </div>
  48. </body>
  49. </html>

示例11

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: repeat(3, 1fr);
  16. grid-template-rows: repeat(3, 1fr);
  17. justify-items: stretch;
  18. align-items: stretch;
  19. justify-items: start;
  20. align-items: center;
  21. justify-items: center;
  22. align-items: center;
  23. /* place-items: 垂直 水平; */
  24. place-items: start end;
  25. place-items: center center;
  26. place-items: center;
  27. }
  28. .item {
  29. width: 50px;
  30. height: 50px;
  31. background-color: violet;
  32. font-size: 2rem;
  33. }
  34. .item.item5 {
  35. justify-self: end;
  36. align-self: end;
  37. place-self: center end;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container">
  43. <div class="item item1">1</div>
  44. <div class="item item2">2</div>
  45. <div class="item item3">3</div>
  46. <div class="item item4">4</div>
  47. <div class="item item5">5</div>
  48. <div class="item item6">6</div>
  49. <div class="item item7">7</div>
  50. <div class="item item8">8</div>
  51. <div class="item item9">9</div>
  52. </div>
  53. </body>
  54. </html>

示例12

  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. /* 容器大小 */
  10. width: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. grid-template-columns: repeat(3, 1fr);
  16. grid-template-rows: repeat(3, 1fr);
  17. /* column-gap: 5px; */
  18. /* row-gap: 15px; */
  19. /* gap: 15px 5px; */
  20. /* gap: 5px 5px; */
  21. gap: 5px;
  22. }
  23. .item {
  24. background-color: violet;
  25. font-size: 2rem;
  26. /* margin: 5px; */
  27. /* padding: 5px;
  28. background-clip: content-box; */
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <div class="container">
  34. <div class="item item1">1</div>
  35. <div class="item item2">2</div>
  36. <div class="item item3">3</div>
  37. <div class="item item4">4</div>
  38. <div class="item item5">5</div>
  39. <div class="item item6">6</div>
  40. <div class="item item7">7</div>
  41. <div class="item item8">8</div>
  42. <div class="item item9">9</div>
  43. </div>
  44. </body>
  45. </html>

课程小结

本次课程较为详细地讲述了Grid布局的相关内容,老师列举了很多实用案例,帮助我了解网页元素布局有了更为清晰的认识,讲解细致,主要内容包括:
1 、主要概念需理解:

  • 容器: 使用网格布局的元素
  • 项目: 容器中的子元素
  • 网格线: 将容器划分为行与列的直线
  • 显式网络: 由用户根据项目数量指示容器生成的网格
  • 隐式网格: 由容器根据项目数量自动生成的网格
  • 单元格: 项目放置的具体空间
  • 网格区域: 一个以上的单元格组成的矩形区域

2、主要的属性设置:

  • display: 声明使用网格布局的容器元素
  • grid-auto-flow: 声明项目在网格中自动填充方案(行优先/列优先)
  • grid-template-columns/rows: 在容器中显式地划分行与列,生成指定数量的单元格来放置项目
  • grid-auto-rows/columns: 根据项目数量,在容器中隐式生成行与列来放置它们

3、单元格数量与尺寸
使用默认网格线划分单元格;
使用命名网格线划分单元格;
重复设置单元格时, 命名网格线会自动添加索引。

4、网格区域
默认网格区域、命名网格区域、网格区域占位符、命名网格区域线默认名称。

5、设置所有项目在容器中的对齐方式、设置所有项目在单元格或网格区域内的对齐方式、设置某个项目在单元格或网格区域内的对齐方式、设置容器中行与列之间的间距/间隙。
通过本次学习,开阔了眼界,感觉到了网页布局的“神奇”之处,增加了学习兴趣。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议