Blogger Information
Blog 52
fans 0
comment 3
visits 42426
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
html学习:第11章 grid布局基础知识(补)
王小飞
Original
708 people have browsed it

创建grid容器

介绍:

  1. /* 创建grid容器 */
  2. display: grid;

代码:

  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: 500px;
  11. height: 500px;
  12. /* 背景颜色 */
  13. background-color: wheat;
  14. /* 创建grid容器 */
  15. display: grid;
  16. /* 设置项目在网格中的填充方案, 默认行优先 */
  17. grid-auto-flow: row;
  18. /* grid-auto-flow: column; 这个是列优先*/
  19. /* 显式地划分行与列, 三列二行 */
  20. /* grid-template网格模板columns列 值 第一列 第二列 第三列*/
  21. grid-template-columns: 100px 100px 100px;
  22. /* grid-template网格模板rows行 值 第一行 第二行*/
  23. grid-template-rows: 100px 100px 100px;
  24. /* 对于放置不下的项目,会隐式生成单元格 */
  25. grid-auto-rows: auto; /*默认*/
  26. grid-auto-rows: 150px; /*自定义放不下的项目*/
  27. }
  28. .item {
  29. /* 背景颜色 */
  30. background-color: lightblue;
  31. /* 文字2倍大 */
  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 item5">5</div>
  43. <div class="item item6">6</div>
  44. <div class="item item7">7</div>
  45. <div class="item item7">8</div>
  46. <div class="item item7">9</div>
  47. </div>
  48. </body>
  49. </html>

效果:

设置单元格的数量与大小

介绍:

1.固定值

2.百分比

3.比例

4.重复设置

5.按分组来设置

6.弹性

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. /* 固定值 */
  16. /* grid-template网格模板columns列 值 第一列 第二列 第三列*/
  17. grid-template-columns: 100px 100px 100px;
  18. /* grid-template网格模板rows行 值 第一行 第二行*/
  19. grid-template-rows: 100px 100px 100px;
  20. /* 百分比 第一列用百分之20 第二列用百分之30 第三列自动*/
  21. grid-template-columns: 20% 30% auto;
  22. /* 高度设置 第一行100 第2行自动 第三行100 */
  23. grid-template-rows: 100px auto 100px;
  24. /* 比例 1fr 等于一比一 每行每列都一样宽或者高*/
  25. grid-template-columns: 1fr 2fr 2fr;
  26. grid-template-rows: 1fr auto 2fr;
  27. /* 重复设置 */
  28. /* repeat(显示几个, 定义的值); */
  29. grid-template-columns: repeat(3, 100px);
  30. /* repeat(显示几个, 定义的值); */
  31. grid-template-rows: repeat(3, 100px);
  32. /* 按分组来设置: (50px-100px) repeat(重复次数, 这里为一个组的值第一列50px 第二列100px);*/
  33. /* 会生成4列 50px 100px 50px 100px */
  34. grid-template-columns: repeat(2, 50px 100px);
  35. /* 弹性 */
  36. /* repeat(重复次数, minmax(最小值50px, 最大值100px)); */
  37. grid-template-columns: repeat(2, minmax(50px, 100px));
  38. /* 这里是设置高度 repeat(重复次数, minmax(最小150px, 1fr));*/
  39. grid-template-rows: repeat(3, minmax(150px, 1fr));
  40. /* 自动填充 */
  41. /* repeat(从左到右auto-fill, 宽度120px); */
  42. grid-template-columns: repeat(auto-fill, 50px);
  43. /*行 repeat(从左到右auto-fill, 宽度120px); */
  44. grid-template-rows: repeat(auto-fill, 50px);
  45. }
  46. .item {
  47. background-color: lightblue;
  48. font-size: 2rem;
  49. }
  50. </style>
  51. </head>
  52. <body>
  53. <div class="container">
  54. <div class="item item1">1</div>
  55. <div class="item item2">2</div>
  56. <div class="item item3">3</div>
  57. <div class="item item4">4</div>
  58. <div class="item item5">5</div>
  59. <div class="item item6">6</div>
  60. <div class="item item7">7</div>
  61. <div class="item item7">8</div>
  62. <div class="item item7">9</div>
  63. </div>
  64. </body>
  65. </html>

效果:

使用默认的网格线来划分单元格

介绍

  1. /* 选中起始行 第一行起 */
  2. grid-row-start: 1;
  3. /* 选中结束行 第三行 */
  4. grid-row-end: 3;
  5. /* 选中起始列 第一行起 */
  6. grid-column-start: 1;
  7. /* 选中结束列 第三行 */
  8. grid-column-end: 3;
  9. 代码:

简写:

  1. /* 简写 起始行 结束行 */
  2. grid-row: 1 / 3;
  3. /* 简写 起始列 结束列 */
  4. grid-column: 3 / 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. /* repeat(生成四个列4, 按比例1fr); */
  16. grid-template-columns: repeat(4, 1fr);
  17. /* repeat(生成四个行4, 按比例1fr); */
  18. grid-template-rows: repeat(4, 1fr);
  19. }
  20. .item {
  21. font-size: 2rem;
  22. }
  23. /* 选中第一个 将第一个占据4个单元格 */
  24. .item.item1 {
  25. background-color: lightgreen;
  26. /* 选中起始行 第一行起 */
  27. grid-row-start: 1;
  28. /* 选中结束行 第三行 */
  29. grid-row-end: 3;
  30. /* 选中起始列 第一行起 */
  31. grid-column-start: 1;
  32. /* 选中结束列 第三行 */
  33. grid-column-end: 3;
  34. /* 按反向选择 放最后
  35. grid-row-start: -1;
  36. grid-row-end: -3;
  37. grid-column-start: -1;
  38. grid-column-end: -3; */
  39. /* 放到中间
  40. grid-row-start: 2;
  41. grid-row-end: 4;
  42. grid-column-start: 2;
  43. grid-column-end: 4;
  44. 选择全部占据 结尾可以选择负-1 代表最后
  45. grid-row-start: 1;
  46. grid-row-end: -1;
  47. grid-column-start: 1;
  48. grid-column-end: -1; */
  49. }
  50. /* 选中第二个 简写 */
  51. .item.item2 {
  52. background-color: lightpink;
  53. /* 简写 起始行 结束行 */
  54. grid-row: 1 / 3;
  55. /* 简写 起始列 结束列 */
  56. grid-column: 3 / 5;
  57. }
  58. /* 选中第三个 使用偏移量来简化, 将第三个移动到左下角 */
  59. .item.item3 {
  60. background-color: yellow;
  61. /*行 span表示跨越 span2 表示跨越2行 */
  62. grid-row: 3 / span 2;
  63. /*列 span表示跨越 span2 表示跨越2行 */
  64. grid-column: 1 / span 2;
  65. }
  66. /* 选中4 */
  67. .item.item4 {
  68. background-color: lightgrey;
  69. /* 行 直接跨越2行grid-row-end: 3; */
  70. grid-row-end: span 2;
  71. /*列 直接跨越2列grid-column-end: 3; */
  72. grid-column-end: span 2;
  73. }
  74. </style>
  75. </head>
  76. <body>
  77. <div class="container">
  78. <div class="item item1">1</div>
  79. <div class="item item2">2</div>
  80. <div class="item item3">3</div>
  81. <div class="item item4">4</div>
  82. </div>
  83. </body>
  84. </html>
  85. 练习代码:
  86. .item.item1 {
  87. background-color: lightgreen;
  88. /* 选中起始行 第一行起 */
  89. grid-row-start: 1;
  90. /* 选中结束行 第三行 */
  91. grid-row-end: -1;
  92. /* 选中起始列 第一行起 */
  93. grid-column-start: 1;
  94. /* 选中结束列 第三行 */
  95. grid-column-end: 2;
  96. .item.item2 {
  97. background-color: lightpink;
  98. /* 简写 起始行 结束行 */
  99. grid-row: 1 / 2;
  100. /* 简写 起始列 结束列 */
  101. grid-column: 2 / span 3;
  102. }
  103. /* 选中第三个 使用偏移量来简化, 将第三个移动到左下角 */
  104. .item.item3 {
  105. background-color: yellow;
  106. /*行 span表示跨越 span2 表示跨越2行 */
  107. grid-row: 2 / -1;
  108. /*列 span表示跨越 span2 表示跨越2行 */
  109. grid-column: 1 / span -1;

练习效果:

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

命名方法介绍:

  1. /* [c1代表第一列-start代表起始线] [c1第一列-end第一列结束县 c2第二列-start第二列起始] ... */
  2. grid-template-columns: [c1-start] 100px [c1-end c2-start] 100px [c2-end c3-start] 100px [c3-end];
  3. /* [c1代表第一行-start代表起始线] [c1第一行-end第一行结束县 c2第二行-start第二行起始] ... */
  4. grid-template-rows: [r1-start] 100px [r1-end r2-start] 100px [r2-end r3-start] 100px [r3-end];

代码:

  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. /* [c1代表第一列-start代表起始线] [c1第一列-end第一列结束县 c2第二列-start第二列起始] ... */
  16. grid-template-columns: [c1-start] 100px [c1-end c2-start] 100px [c2-end c3-start] 100px [c3-end];
  17. /* [c1代表第一行-start代表起始线] [c1第一行-end第一行结束县 c2第二行-start第二行起始] ... */
  18. grid-template-rows: [r1-start] 100px [r1-end r2-start] 100px [r2-end r3-start] 100px [r3-end];
  19. }
  20. .item {
  21. font-size: 2rem;
  22. }
  23. .item.item1 {
  24. background-color: lightgreen;
  25. /* 默认就是跨越一行/一列,所以可以省略 */
  26. /* 开始行 第一行开始 第二行结束*/
  27. grid-row-start: span 4;
  28. /* 开始列 第三列开始*/
  29. grid-column-start: span 1;
  30. }
  31. /* 简写 */
  32. .item.item2 {
  33. background-color: lightpink;
  34. grid-column-start: 2;
  35. /* grid-column: c1-start / c3-end; */
  36. /* 直接跨越三行 */
  37. grid-column-end: span 3;
  38. }
  39. /* 使用偏移量来简化, 将第三个移动到左下角 */
  40. .item.item3 {
  41. background-color: yellow;
  42. /* 跨越2行 */
  43. grid-row-end: span 2;
  44. /* 跨越2列 */
  45. grid-column-end: span 2;
  46. }
  47. .item.item4 {
  48. background-color: lightgrey;
  49. }
  50. </style>
  51. </head>
  52. <body>
  53. <div class="container">
  54. <div class="item item1">1</div>
  55. <div class="item item2">2</div>
  56. <div class="item item3">3</div>
  57. <div class="item item4">4</div>
  58. </div>
  59. </body>
  60. </html>

练习效果:

默认网格区域

介绍

  • grid-area(网格区域):第一行开始 / 第一行结束 / 第一列开始 / 第一列介绍

练习代码:

  1. .item.item1 {
  2. background-color: lightgreen;
  3. grid-area: span 4 / span 4;
  4. .item.item2 {
  5. background-color: lightpink;
  6. grid-area: span 1 / span 4;
  7. }
  8. }

效果:

命名网格区域 能够快速写出网页布局

介绍

  • grid-area: 命名; 给每个区域命名
  • 使用grid-template-areas: 直接写在容器里面

代码:

  1. .container {
  2. /* 容器大小 */
  3. width: 400px;
  4. height: 400px;
  5. background-color: wheat;
  6. /* 创建grid容器 */
  7. display: grid;
  8. /* 第一列80 第二列自动计算 第三列80 */
  9. grid-template-columns: 80px 1fr 80px;
  10. /* 第一行40 第二行自动计算 第三行40 */
  11. grid-template-rows: 40px 1fr 40px;
  12. /* 设置命名网格区域, 相同名称的命名区域会合并 */
  13. grid-template-areas:
  14. "hello hello hello"
  15. "left main right"
  16. "footer footer footer";
  17. }

网格区域占位符

介绍:

第二行的命名可以不写用点代替,他会根据grid-template-columns: 80px 1fr 80px;grid-template-rows: 40px 1fr 40px;的设置自动计算。直接去掉名称即可

代码:

  1. grid-template-areas:
  2. "hello hello hello"
  3. ". . . "
  4. "footer footer footer";

效果:

网格区域线的默认名称

介绍:

默认的名称header-start / header-start / header-end / header-end; 可以直接使用在grid-area: 命名 达到相同的效果

代码:

  1. .item.item1 {
  2. background-color: lightgreen;
  3. grid-area: header-start / header-start / header-end / header-end;
  4. }
  5. /* 简写 */
  6. .item.item2 {
  7. background-color: lightpink;
  8. /* 多余 */
  9. /* grid-area: left; */
  10. }
  11. /* 使用偏移量来简化, 将第三个移动到左下角 */
  12. .item.item3 {
  13. background-color: yellow;
  14. /* grid-area: main; */
  15. }
  16. .item.item4 {
  17. background-color: lightgrey;
  18. grid-area: footer-start / footer-start / footer-end / footer-end;

效果:

设置单元格在容器中的对齐方式

介绍

  1. /* 水平方向对齐 */
  2. justify-content: end;
  3. /* 垂直方向对齐 */
  4. align-content: end;
  5. /* center居中 */
  6. justify-content: center;
  7. align-content: center;
  8. /* 水平方向两端对齐space-between; */
  9. justify-content: space-between;
  10. /* 水平方向分散对齐space-around */
  11. justify-content: space-around;
  12. /* 水平方向平行对齐space-evenly */
  13. justify-content: space-evenly;
  14. /* 纵向两端对齐space-between */
  15. align-content: space-between;
  16. /* 纵向分散对齐space-around; */
  17. align-content: space-around;
  18. /* 纵向平行对齐space-evenly; */
  19. align-content: space-evenly;
  20. /* place-content: 垂直对齐 水平对齐; */
  21. place-content: center start;

设置项目在单元格中的对齐方式

介绍:
/ 水平平设置靠左 /
justify-items: stretch;
/ 垂直方向 /
align-items: stretch;
/ 水平靠左 /
justify-items: start;
/ 垂直居中 /
align-items: center;
/ 水平居中 /
justify-items: center;
/ 垂直居中 /
align-items: center;

以上都不常用

常用的:

  1. /* z直接设置全部居中 */
  2. place-items: center;

效果

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:grid现在的兼容性已经很好了, 只要不太古老的浏览器都没问题
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