博客列表 >(grid 属性) 演示过程

(grid 属性) 演示过程

lus菜
lus菜原创
2020年12月25日 23:57:53787浏览

grid属性总结:

网格容器:

  1. 网格容器:由多个矩形单元组成
  2. 网格项目:网格容器的子元素,必须放在网格单元中
  3. 网格单元:分"单元格""网格区域两种表现形式"
  4. 网格轨道:由多个网格单元组成,其排列方向有"行轨""列轨之分"
  5. 轨道间距: 容器中轨道之间的间距,分"行轨间距""列轨间距"两种

演示代码:

  1. //网格容器
  2. .szds {
  3. //边框
  4. border: 1px solid #000;
  5. //内边距
  6. padding: 0.5em;
  7. display: grid;
  8. //轨道的列宽
  9. grid-template-columns: 10em 10em 10em;
  10. //轨道的行高
  11. grid-template-rows: 5em 5em;
  12. //轨道的间距
  13. //gap: 水平 垂直
  14. gap: 0.5em;
  15. }
  16. //网格项目:网格容器中的"子元素"
  17. .szds>.item{
  18. //默认生成一列N行的容器(N就是项目的数量)
  19. background-color: #bbbbbb;
  20. border: 1px solid #000;
  21. padding: 0.5em;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <div class="szds">
  27. <span class="item">wcmd1</span>
  28. <span class="item">wcmd2</span>
  29. <span class="item">wcmd3</span>
  30. <span class="item">wcmd4</span>
  31. <span class="item">wcmd5</span>
  32. <span class="item">wcmd6</span>
  33. </div>
  34. </body>

演示效果:

新单位: fr

  1. fr auto之间的区别:grid-template-columns: 1fr auto 1fr;此时,auto无效; fr 尽可能不要与 auto 同时使用;
  2. fr % 的区别:grid-template-columns: 20% 1fr 20%; %与fr可以共存,计算方式:总宽度减去百分比的宽度,剩下的全部给fr;
  3. fr 与其他单位混合,empx; grid-template-columns: 8em 1fr 2fr 200px;pxem是固定的,计算时要减去这些固定值,将剩下的空间在fr之间分配 计算方式:总宽度 - 8em -200px,将剩下的空间在第2列与第3列之间分配;

演示代码:

  1. <style>
  2. .szds{
  3. border: 1px solid #000;
  4. padding: 0.5em;
  5. display: grid;
  6. grid-template-columns: 10em 10em 10em;
  7. grid-template-rows: 5em 5em;
  8. //使用新的单位:fr(fraction)
  9. grid-template-columns: auto auto auto;
  10. //fr 与 auto 之间的区别
  11. grid-template-columns: 1fr auto 1fr ;
  12. //fr 与 % 的区别
  13. grid-template-columns: 20% 1fr 20%;
  14. //fr 与其他单位混合, em、px
  15. grid-template-columns: 8em 1fr 2fr 200px;
  16. //与auto相邻的不是em,rem,%,而是fr
  17. grid-template-columns: 1fr auto 1fr;
  18. //轨道行高
  19. grid-template-rows:5em 5em;
  20. //轨道间距
  21. gap: 0.5em;
  22. }
  23. //网格项目
  24. .szds>.item {
  25. background-color: lightcoral;
  26. border: 1px solid #000;
  27. padding: 0.5em;
  28. }
  29. </style>
  30. <body>
  31. <div class="szds">
  32. <span class="item">wcmdf1</span>
  33. <span class="item">wcmdf2</span>
  34. <span class="item">wcmdf3</span>
  35. <span class="item">wcmdf4</span>
  36. <span class="item">wcmdf5</span>
  37. <span class="item">wcmdf6</span>
  38. </div>
  39. </body>

效果示例:

常用函数:

  1. 函数repeat()与minmax()

演示代码:

  1. <style>
  2. .wcmdf{
  3. border: 1px solid #000;
  4. padding: 0.5em;
  5. display: grid;
  6. grid-template-columns: 10em 10em 10em;
  7. //reapeat()
  8. //第二个参数可以是多个值
  9. grid-template-columns: repeat(3,1fr);
  10. grid-template-columns: repeat(3,1fr 2fr);
  11. //展开
  12. grid-template-columns:1fr 2fr 1fr 2fr 1fr 2fr;
  13. //混合使用
  14. grid-template-columns: repeat(2,1fr)2fr;
  15. //展开
  16. grid-template-columns: 1fr 1fr 2fr;
  17. //minmax()
  18. //中间列,最小宽度是20em,最大宽度是左右的两倍
  19. grid-template-columns: 1fr minmax(20em,2fr) 1fr;
  20. grid-template-columns: 20em minmax(20em,1fr);
  21. //轨道的行高
  22. grid-template-rows: 5em 5em;
  23. //轨道间距
  24. gap: 0.5em;
  25. }
  26. //网格项目
  27. .wcmdf>.index {
  28. background-color: rgb(0, 255, 157);
  29. border: 1px solid #000;
  30. padding: 0.5em;
  31. }
  32. </style>
  33. <body>
  34. <div class="wcmdf">
  35. <span class="index">ysqsm1</span>
  36. <span class="index">ysqsm2</span>
  37. <span class="index">ysqsm3</span>
  38. <span class="index">ysqsm4</span>
  39. <span class="index">ysqsm5</span>
  40. <span class="index">ysqsm6</span>
  41. </div>
  42. </body>

效果示例:

排列方式与隐式轨道:

  1. 排列方式: grid-auto-flow
  2. 隐式轨道的行高: grid-auto-rows
  3. 隐式轨道的列宽: grid-auto-columns

演示代码

  1. <style>
  2. .index{
  3. border: 1px solid #000;
  4. padding: 0.5em;
  5. display: grid;
  6. //轨道的列宽
  7. grid-template-columns: repeat(3,1fr);
  8. //轨道的行高
  9. grid-template-rows: 5em 5em;
  10. //这时,原来声明的网格单元叫:显示轨道新项目显示的轨道称为:隐式轨道
  11. //这时,默认项目在容器中按:先行后列的顺序排列,
  12. //"行优先"
  13. grid-auto-flow: row;
  14. //行优先时要设置隐式轨道的行高
  15. grid-auto-rows: 5em;
  16. //列优先
  17. grid-auto-flow: column;
  18. //列优先时要设置的隐式轨道的列宽
  19. grid-auto-columns: 1fr;
  20. //轨道间距
  21. gap: 0.5em;
  22. }
  23. //网格项目
  24. .index>.ysrj {
  25. background-color: lightpink;
  26. border: 1px solid #000;
  27. padding: 0.5em;
  28. }
  29. </style>
  30. <body>
  31. <div class="index">
  32. <span class="ysrj">这是1</span>
  33. <span class="ysrj">这是2</span>
  34. <span class="ysrj">这是3</span>
  35. <span class="ysrj">这是4</span>
  36. <span class="ysrj">这是5</span>
  37. <span class="ysrj">这是6</span>
  38. <span class="ysrj">这是7</span>
  39. <span class="ysrj">这是8</span>
  40. <span class="ysrj">这是9</span>
  41. </div>
  42. </body>

效果示例:

自定义容器显示位置:

  1. grid-area: 类型不同,意义不同;grid-area: 设置任何一个项目所在的网格单元的区域
  2. 值中只有span: 单值:跨的行数, 双值:跨的行与列数,如果只想设置列数,就必须设置行数(auto)
  1. 值中有span和编号: 双值:没有span.默认跨11列,grid-area: 2 / 3 ; 三值:省了列结束编号或跨的数量,此时前面的值可使用auto; 四值:最完整的语法: 行起始编号 / 列起始编号 / 行结束编号 / 列结束编号;

演示代码:

  1. <style>
  2. .condear{
  3. border: 1px solid #000;
  4. padding: 0.5em;
  5. display: grid;
  6. grid-template-columns: repeat(3,1fr);
  7. grid-template-rows: 5em 5em;
  8. grid-auto-rows: 5em;
  9. gap: 0.5em;
  10. }
  11. //编号从左上角开始(1,1)并递增
  12. //grid-area: 设置任何一个项目所在的网格单元的区域
  13. //以第5个类型来举例
  14. .condear>.sgby:nth-of-type(5){
  15. background-color: lightyellow;
  16. grid-area: 2 / 2 / 3 / 3;
  17. //把它放入到第一个网格单元
  18. grid-area: 1 / 1 / 2 / 2;
  19. //默认项目是跨越一行一列
  20. grid-area: 1 / 1;
  21. //但是,如果要跨越一行以上或1列以上,就不能省
  22. //例如要跨越2行3列
  23. grid-area: 1 / 1/ 3 / 4;
  24. //通常只关心跨几行或几列,并不关心结束的编号
  25. grid-area: 1 / 1 / span 2 / span 3;
  26. }
  27. //选中第一个类型
  28. .condear>.sgby:first-of-type {
  29. background-color: lightgreen;
  30. grid-area: 3 / 1 / span 1 / span 3;
  31. //因为 3 / 1 是当前位置,所以可以省
  32. grid-area:span 1 / span 3;
  33. //默认是跨越一行一列
  34. grid-area: auto / span 3;
  35. }
  36. //网格项目
  37. .condear>.sgby {
  38. background-color: yellow;
  39. border: 1px solid #000;
  40. padding: 0.5em;
  41. }
  42. </style>
  43. <body>
  44. <div class="condear">
  45. <span class="sgby">类型1</span>
  46. <span class="sgby">类型2</span>
  47. <span class="sgby">类型3</span>
  48. <span class="sgby">类型4</span>
  49. <span class="sgby">类型5</span>
  50. <span class="sgby">类型6</span>
  51. <span class="sgby">类型7</span>
  52. <span class="sgby">类型8</span>
  53. <span class="sgby">类型9</span>
  54. </div>
  55. </body>

效果示例:

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