博主信息
博文 64
粉丝 2
评论 1
访问量 58973
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
grid属性,实例演示
Y的博客
原创
928人浏览过

网格容器/网格项目/网格轨道/轨道间距

  • 网格容器:由若干个矩形网格单元构成
  • 网格项目:网格容器中的子元素,必须放在网格单元中
  • 网格单元:有单元格和网格区域两种表现形式
  • 网格轨道:由多个网格单元构成,根据方向有行轨和列轨
  • 轨道间距:容器中轨道之间的间距,有行轨间距和列轨间距

  1. .container {
  2. /* grid子元素默认是块元素 */
  3. border: solid 1px #000;
  4. padding: 0.5em;
  5. display: grid;
  6. /* 设置为两行三列的布局 */
  7. /* 设置列宽为10em */
  8. grid-template-columns: 10em 10em 10em;
  9. /* 设置行高为5em */
  10. grid-template-rows:5em 5em;
  11. /* 设置轨道间距 gap:第一个值时行间距 第二个值时列间距*/
  12. gap:1em 0.5em;
  13. }
  14. /* 网格项目:网格容器中的子元素,必须放在网格单元中 */
  15. .container>.item {
  16. /* 默认生成一列N行的子元素 */
  17. border: solid 1px #000;
  18. background-color:lightcyan;
  19. padding: 0.5em;
  20. }

设置单元格尺寸的新单位:fr

  1. .container {
  2. /* grid子元素默认是块元素 */
  3. border: solid 1px #000;
  4. padding: 0.5em;
  5. display: grid;
  6. /* 轨道列宽 */
  7. grid-template-columns: 10em 10em 10em;
  8. /* 设置轨道宽度时可以使用一个新的单位: fr (fraction),类似flex中的伸缩因子 */
  9. grid-template-columns: auto auto auto;
  10. /* 1. fr 与 auto 之间的区别 */
  11. /* 需求: 中间一列的宽度是二边的二倍 */
  12. /* 此时 auto 完全失灵 */
  13. grid-template-columns: 1fr 2fr 1fr;
  14. /* 2. fr 与 % 的区别 */
  15. /* 需求: 中间一列是左右的三倍 */
  16. /* grid-template-columns: 1fr 3fr 1fr; */
  17. /* grid-template-columns: 20% 60% 20%; */
  18. /* % 与 fr 可以共存,计算方式,总宽度减去百分比的宽度,将剩下的全部分给fr */
  19. grid-template-columns: 20% 1fr 20%;
  20. /* auto, fr, % 都是相对单位,都可以触发自动计算机制,尽可能不要同时出现 */
  21. /* 3. fr 与其它单位混合, 如 em, px */
  22. /* px是固定的,em是固定,计算时要减去这些固定值,将剩下的空间在fr之间分配 */
  23. /* 总宽度 - 8em - 200px,将剩下的空间在第2列与第3列之间分配 */
  24. grid-template-columns: 8em 1fr 2fr 200px;
  25. /* 4. fr 尽可能不要与 auto 同时使用 */
  26. /* auto 与 px , em ,会自动计算 */
  27. grid-template-columns: 30% auto 10em;
  28. /* 与 auto 相邻的不是em,rem,%,而是fr */
  29. grid-template-columns: 1fr auto 1fr;
  30. /* 设置行高为5em */
  31. grid-template-rows:5em 5em;
  32. /* 设置轨道间距 gap:第一个值时行间距 第二个值时列间距*/
  33. gap:1em 0.5em;
  34. }
  35. /* 网格项目:网格容器中的子元素,必须放在网格单元中 */
  36. .container>.item {
  37. /* 默认生成一列N行的子元素 */
  38. border: solid 1px #000;
  39. background-color:lightcyan;
  40. padding: 0.5em;
  41. }

设置网格单元尺寸的常用函数: repeat(),minmax()

  1. .container {
  2. /* grid子元素默认是块元素 */
  3. border: solid 1px #000;
  4. padding: 0.5em;
  5. display: grid;
  6. /* 轨道列宽 */
  7. /* grid-template-columns: 10em 10em 10em; */
  8. /* 1. reapeat() */
  9. grid-template-columns: repeat(3,10em);
  10. /* 第二个参数可以是多个值 */
  11. grid-template-columns: repeat(3,10em 2em);
  12. grid-template-columns: repeat(3,1fr);
  13. grid-template-columns: repeat(3,1fr 2fr);
  14. /* 多个值的时候后面两个值是一组 */
  15. /* 展开 */
  16. grid-template-columns: 1fr 2fr 1fr 2fr 1fr 2fr;
  17. /* 混合使用 */
  18. grid-template-columns: repeat(2, 1fr) 2fr;
  19. /* 展开 */
  20. grid-template-columns: 1fr 1fr 2fr;
  21. /* 2. minmax() */
  22. /* 中间列,最小宽度是20em,最大宽高是左右的2倍 */
  23. grid-template-columns: 1fr minmax(20em,2fr) 1fr;
  24. /* grid-template-columns: 1fr minmax(20em,1fr) ; */
  25. /* 设置行高为5em */
  26. grid-template-rows:5em 5em;
  27. /* 设置轨道间距 gap:第一个值时行间距 第二个值时列间距*/
  28. gap:1em 0.5em;
  29. }
  30. /* 网格项目:网格容器中的子元素,必须放在网格单元中 */
  31. .container>.item {
  32. /* 默认生成一列N行的子元素 */
  33. border: solid 1px #000;
  34. background-color:lightcyan;
  35. padding: 0.5em;
  36. }

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

  1. 排列方式:grid-auto-flow
  2. 行优先:grid-auto-rows
  3. 列优先:grid-auto-columns
  1. .container {
  2. border: solid 1px #000;
  3. padding: 0.5em;
  4. display: grid;
  5. /* 轨道列宽 */
  6. /* grid-template-columns: 10em 10em 10em; */
  7. /* 1. reapeat() */
  8. grid-template-columns: repeat(3,1fr);
  9. /* 设置行高为5em */
  10. grid-template-rows:repeat(2,5em);
  11. /* 设置轨道间距 gap:第一个值时行间距 第二个值时列间距*/
  12. gap:1em 0.5em;
  13. /* 此时声明的网格单元数量已经不够存入所有的网格项目了 */
  14. /* 多出的三个项目会自动放入到自动生成的网格空间中了 */
  15. /* 原来声明的网格单元叫: 显式轨道
  16. 新项目显示的轨道称为: 隐式轨道 */
  17. /* 默认按先行后列的顺序的排列,行优先 */
  18. grid-auto-flow: row;
  19. /* 自动生成隐式轨道的高度是自动的 */
  20. /* 行优先时,要设置隐式轨道的行高 */
  21. grid-auto-rows: 5em;
  22. /* 列优先 */
  23. /* grid-auto-flow: column; */
  24. /* 列优先时要设置轨道的列宽 */
  25. /* grid-auto-columns: 1fr; */
  26. }
  27. /* 网格项目:网格容器中的子元素,必须放在网格单元中 */
  28. .container>.item {
  29. /* 默认生成一列N行的子元素 */
  30. border: solid 1px #000;
  31. background-color:lightcyan;
  32. padding: 0.5em;
  33. }

自定义项目在容器中显示的位置

  1. /* 编号从左上角开始(1,1),并递增 */
  2. /* grid-area: 设置任何一个项目所在网格单元的区域; */
  3. /* grid-area: 行起始标号/列起始编号/行结束编号/列结束标号 */
  4. .container .item:nth-of-type(5){
  5. background-color: burlywood;
  6. grid-area: 2/2/3/3;
  7. /* 将他放在第一个网格单元中 */
  8. grid-area: 1/1/2/2;
  9. /* 默认项目跨越一行一列 */
  10. grid-area: 1/1;
  11. /* 跨越两行三列 */
  12. grid-area: 1/1/3/4;
  13. /* 通常只关心几行几列,并不关心结束标号 */
  14. grid-area: 1 / 1 / span 2 / span 3;
  15. }
  16. .container .item:first-of-type {
  17. background-color: lightgreen;
  18. grid-area:3/1/span 1 /span 3 ;
  19. /* 因为 3 / 1 是当前位置,所以可省 */
  20. grid-area: span 1/span 3;
  21. /* 默认是跨一行一列,跨越列的时候前面不能省,用auto表示 */
  22. grid-area: auto/span 3;
  23. }

总结:

序号 属性 描述
1 grid-template-columns 设置几列和列宽
2 grid-template-rows 设置几行和行高
3 gap 设置轨道间距
4 fr 设置单元格尺寸单位
5 repeat(),minmax() 设置网格单元尺寸的常用函数
6 grid-auto-flow 网格单元排列方式
7 grid-auto-rows 行优先
8 grid-auto-columns 列优先
9 grid-area 自定义项目在容器中显示的位置
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学