博客列表 >html学习:第11章 grid布局基础知识(补)

html学习:第11章 grid布局基础知识(补)

王小飞
王小飞原创
2020年05月22日 17:42:39713浏览

创建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;

效果

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