Blogger Information
Blog 37
fans 2
comment 0
visits 26675
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1224-实例演示全部grid属性
世纪天城
Original
799 people have browsed it

作业内容:将今晚提及的全部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>

实例图片

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