博客列表 >1224-实例演示全部grid属性

1224-实例演示全部grid属性

世纪天城
世纪天城原创
2020年12月25日 13:16:40788浏览

作业内容:将今晚提及的全部grid属性,进行实例演示,并记住讲过每一个属性值的意义,写出总结


grid是由网格容器/网格项目/网格轨道/轨道间距组成

  1. 网格容器: 由若干个矩形网格单元构成
  1. 网格项目: 网格容器的子元素,必须放在网络单元中
  2. 网格单元: "单元格""网格区域"二种表现形式
  3. 网格轨道: 由多个网格单元组成,根据排列方向有"行轨""列轨"之分
  4. 轨道间距: 容器中轨道之间的间距,有"行轨间距","列轨间距" */
  5. flex中子元素默认为inline元素,grid中子元素默认为block元素
  6. % fr 可以共存,计算方式,总宽度减去百分比的宽度,将剩下的全部分给fr
  7. auto, fr, % 都是相对单位,都可以触发自动计算机制,尽可能不要同时出现
  8. fr为动态值

代码

  1. div{
  2. display: grid;
  3. /* 1. 设置轨道的列宽 */
  4. grid-template-columns: 10em 10em 10em;
  5. /* 设置轨道宽度时可以使用一个新的单位: fr (fraction),类似flex中的伸缩因子 */
  6. grid-template-columns: 1fr 1fr 1fr;
  7. /* 2. 设置轨道的行高 */
  8. grid-template-rows: 5em 5em;
  9. /* 3. 设置轨道的间距 */
  10. /* gap: 水平 垂直 */
  11. gap: 1em 2em;
  12. /* 如果水平和垂直间距一样可缩写gap: 1em */
  13. gap: 1em;
  14. }
  15. /* 设置网格单元尺寸的常用函数: repeat(),minmax() */
  16. div{
  17. /* 1. reapeat() 设置列宽*/
  18. /* 第一个参数为列数 第二个参数为列的宽度 */
  19. grid-template-columns: repeat(3, 10em);
  20. /* 第二个参数可以是多个值 */
  21. grid-template-columns: repeat(3, 10em 2em);
  22. /* 单个单元格固定其他自适应 fr为动态值*/
  23. grid-template-columns: repeat(3, 1fr 2fr);
  24. /* 2. minmax() 最小宽度*/
  25. /* 表示中间列的最小宽度是20em,最大宽高位左右宽度的2倍 */
  26. grid-template-columns: 1fr minmax(20em, 2fr) 1fr;
  27. /* 表示为第一固定 第二位最宽度20em最大宽度为第一个的1倍 */
  28. grid-template-columns: 20em minmax(20em, 1fr);
  29. }
  30. /* 网格项目: 网格容器中的"子元素" , 与flex是一样的 */
  31. div>span{
  32. background-color: chocolate;
  33. border: #000 1px solid;
  34. }

2.网格单元的排列方式与隐式轨道

  1. 排列方式 : grid-auto-flow
  2. 隐式轨道的行高: grid-auto-rows
  3. 隐式轨道的列宽: grid-auto-columns
  4. 当声明的网格单元数量已经不够存入所有的网格项目时 */
  5. 此时,多出的项目会自动放入到自动生成的网格空间中 */
  6. 这时,原来声明的网格单元叫: 显式轨道;新项目显示的轨道称为: 隐式轨道

代码

  1. div{
  2. /* 此时,默认项目在容器中按: 先行后列的顺序排列,“行优先” */
  3. grid-auto-flow: row;
  4. /* 自动生成的隐式轨道的高度是自动的 */
  5. /* 行优先时要设置隐式轨道的行高 */
  6. grid-auto-rows: 5em;
  7. /* 列优先 */
  8. grid-auto-flow: column;
  9. /* 列优时要设置的隐式轨道的列宽 */
  10. grid-auto-columns: 1fr;
  11. }

3.使用grid-area:自定义项目在容器的显示位置

  1. grid-area: 参数数量不同,意义不同
  2. 1. 值中只有span
  3. 1.1 单值: 跨的行数
  4. 1.2 双值: 跨的行与列数,如果只想设置列数,就必须设置行数(auto)
  5. 2. 值中有span和编号
  6. 2.1 双值: 没有span,默认跨11列, grid-area: 2 / 3 ;
  7. 2.2 三值: 省了列结束编号或跨的数量,此时前面的值可使用auto
  8. 2.3 四值: 最完整的语法

代码

  1. /* 使用grid-area:自定义项目在容器的显示位置 */
  2. div{grid-template-columns: 1fr 1fr 1fr;grid-auto-flow: row;}
  3. /* 编号从左上角开始(1,1),并递增 */
  4. /* grid-area: 设置任何一个项目所在的网格单元的区域 */
  5. /* grid-area: 行起始编号 / 列起始编号 / 行结束编号 / 列结束编号 */
  6. div>span:nth-of-type(2){
  7. background-color: cornsilk;
  8. /* 原始位置 */
  9. grid-area: 1/1/2/2;
  10. /* 跨行 */
  11. grid-area: -2/1/3/4;
  12. /* 跨列 */
  13. grid-area: 1/2/4/4;
  14. /* span站位关键字 */
  15. grid-area: 1/1 / span 2;
  16. grid-area: 参数数量不同,意义不同
  17. }

整体代码

  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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>grid网格容器/网格项目/网格轨道/轨道间距</title>
  8. <style>
  9. /* 1. 网格容器: 由若干个矩形网格单元构成 */
  10. /* 2. 网格项目: 网格容器的子元素,必须放在网络单元中 */
  11. /* 3. 网格单元: 有"单元格"和"网格区域"二种表现形式*/
  12. /* 4. 网格轨道: 由多个网格单元组成,根据排列方向有"行轨"和"列轨"之分 */
  13. /* 5. 轨道间距: 容器中轨道之间的间距,有"行轨间距","列轨间距" */
  14. /*注 flex中子元素默认为inline元素,grid中子元素默认为block元素
  15. 当 % 与 fr 可以共存,计算方式,总宽度减去百分比的宽度,将剩下的全部分给fr
  16. 当auto, fr, % 都是相对单位,都可以触发自动计算机制,尽可能不要同时出现
  17. fr为动态值
  18. */
  19. div{
  20. display: grid;
  21. /* 1. 设置轨道的列宽 */
  22. grid-template-columns: 10em 10em 10em;
  23. /* 设置轨道宽度时可以使用一个新的单位: fr (fraction),类似flex中的伸缩因子 */
  24. grid-template-columns: 1fr 1fr 1fr;
  25. /* 2. 设置轨道的行高 */
  26. grid-template-rows: 5em 5em;
  27. /* 3. 设置轨道的间距 */
  28. /* gap: 水平 垂直 */
  29. gap: 1em 2em;
  30. /* 如果水平和垂直间距一样可缩写gap: 1em */
  31. gap: 1em;
  32. }
  33. /* 设置网格单元尺寸的常用函数: repeat(),minmax() */
  34. div{
  35. /* 1. reapeat() 设置列宽*/
  36. /* 第一个参数为列数 第二个参数为列的宽度 */
  37. grid-template-columns: repeat(3, 10em);
  38. /* 第二个参数可以是多个值 */
  39. grid-template-columns: repeat(3, 10em 2em);
  40. /* 单个单元格固定其他自适应 fr为动态值*/
  41. grid-template-columns: repeat(3, 1fr 2fr);
  42. /* 2. minmax() 最小宽度*/
  43. /* 表示中间列的最小宽度是20em,最大宽高位左右宽度的2倍 */
  44. grid-template-columns: 1fr minmax(20em, 2fr) 1fr;
  45. /* 表示为第一固定 第二位最宽度20em最大宽度为第一个的1倍 */
  46. grid-template-columns: 20em minmax(20em, 1fr);
  47. }
  48. /* 网格项目: 网格容器中的"子元素" , 与flex是一样的 */
  49. div>span{
  50. background-color: chocolate;
  51. border: #000 1px solid;
  52. }
  53. /* 网格单元的排列方式与隐式轨道 */
  54. /*
  55. 1. 排列方式 : grid-auto-flow
  56. 2. 隐式轨道的行高: grid-auto-rows
  57. 3. 隐式轨道的列宽: grid-auto-columns
  58. */
  59. /* 当声明的网格单元数量已经不够存入所有的网格项目时 */
  60. /* 此时,多出的项目会自动放入到自动生成的网格空间中 */
  61. /* 这时,原来声明的网格单元叫: 显式轨道;新项目显示的轨道称为: 隐式轨道 */
  62. div{
  63. /* 此时,默认项目在容器中按: 先行后列的顺序排列,“行优先” */
  64. grid-auto-flow: row;
  65. /* 自动生成的隐式轨道的高度是自动的 */
  66. /* 行优先时要设置隐式轨道的行高 */
  67. grid-auto-rows: 5em;
  68. /* 列优先 */
  69. grid-auto-flow: column;
  70. /* 列优时要设置的隐式轨道的列宽 */
  71. grid-auto-columns: 1fr;
  72. }
  73. /* 使用grid-area:自定义项目在容器的显示位置 */
  74. div{grid-template-columns: 1fr 1fr 1fr;grid-auto-flow: row;}
  75. /* 编号从左上角开始(1,1),并递增 */
  76. /* grid-area: 设置任何一个项目所在的网格单元的区域 */
  77. /* grid-area: 行起始编号 / 列起始编号 / 行结束编号 / 列结束编号 */
  78. div>span:nth-of-type(2){
  79. background-color: cornsilk;
  80. /* 原始位置 */
  81. grid-area: 1/1/2/2;
  82. /* 跨行 */
  83. grid-area: -2/1/3/4;
  84. /* 跨列 */
  85. grid-area: 1/2/4/4;
  86. /* span站位关键字 */
  87. grid-area: 1/1 / span 2;
  88. grid-area: 参数数量不同,意义不同
  89. /*注 1. 值中只有span
  90. 1.1 单值: 跨的行数
  91. 1.2 双值: 跨的行与列数,如果只想设置列数,就必须设置行数(auto)
  92. 2. 值中有span和编号
  93. 2.1 双值: 没有span,默认跨1行1列, grid-area: 2 / 3 ;
  94. 2.2 三值: 省了列结束编号或跨的数量,此时前面的值可使用auto
  95. 2.3 四值: 最完整的语法 */
  96. }
  97. </style>
  98. </head>
  99. <body>
  100. <div>
  101. <span class="span">1</span>
  102. <span class="span">2</span>
  103. <span class="span">3</span>
  104. <span class="span">4</span>
  105. <span class="span">5</span>
  106. <span class="span">6</span>
  107. <span class="span">7</span>
  108. <span class="span">8</span>
  109. <span class="span">9</span>
  110. </div>
  111. </body>
  112. </html>

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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>grid布局</title>
  8. <style>
  9. *{margin: 0;padding: 0;box-sizing: border-box;}
  10. body{
  11. display: grid;
  12. grid-template-columns: 20em 1fr 20em;
  13. grid-template-rows: 8vh calc(84vh - 32px) 8vh;
  14. gap: 1em;
  15. }
  16. body>*{
  17. /* border: #000 1px solid; */
  18. }
  19. header,footer{
  20. background-color: cornsilk;
  21. grid-area: span 1 / span 3;
  22. }
  23. main{
  24. background-color: cyan;
  25. grid-area: 2/2;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <header>header</header>
  31. <main>主体</main>
  32. <aside>左侧栏</aside>
  33. <aside>右侧栏</aside>
  34. <footer>footer</footer>
  35. </body>
  36. </html>

实例图片

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