博主信息
博文 18
粉丝 0
评论 0
访问量 17808
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
CSS中Grid布局的属性认识
马晓宁
原创
734人浏览过

1.grid 布局

grid是 css 中的一种新的布局方式,对盒子和盒子内容的位置及尺寸有很强的控制能力。与 flex 不同,flex 着重于单轴,而 grid 适应于多轴。

2. 基本概念

设置 display: grid; 的元素称为容器,它的直接子元素称为项目,但注意子孙元素不是项目。

grid line:网格线,构成 grid 布局的结构,分为水平和竖直两种。

grid track:两条相邻网格线之间的空间,可以认为是一行或者一列。

grid cell:两条相邻行和相邻列之间分割线组成的空间,是 grid 布局中的一个单元。

grid area:四条网格线包裹的全部空间,任意数量的 grid cell 组成一个 grid area。

3. 容器属性

grid-template 系列
grid-template-columns
grid-template-rows
grid-template-areas
grid-gap 系列
grid-column-gap
grid-row-gap
place-items 系列
justify-items
align-items
place-content 系列
justify-content
align-content
grid 系列
grid-auto-columns
grid-auto-rows
grid-auto-flow

4.示例1

  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: 400px;
  11. height: 400px;
  12. background-color: wheat;
  13. /* 创建grid容器 */
  14. display: grid;
  15. /* 设置项目在网格中的填充方案, 默认行优先 */
  16. grid-auto-flow: row;
  17. /* grid-auto-flow: column; */
  18. /* 显式地划分行与列, 三列二行 */
  19. grid-template-columns: 100px 100px 100px;
  20. grid-template-rows: 100px 100px;
  21. /* 对于放置不下的项目,会隐式生成单元格 */
  22. grid-auto-rows: auto;
  23. grid-auto-rows: 150px;
  24. }
  25. .item {
  26. background-color: lightblue;
  27. font-size: 2rem;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class="container">
  33. <div class="item item1">1</div>
  34. <div class="item item2">2</div>
  35. <div class="item item3">3</div>
  36. <div class="item item4">4</div>
  37. <div class="item item5">5</div>
  38. <div class="item item6">6</div>
  39. <div class="item item7">7</div>
  40. </div>
  41. </body>
  42. </html>

示例2

  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: 100px 100px 100px;
  17. grid-template-rows: 100px 100px 100px;
  18. /* 百分比 */
  19. grid-template-columns: 20% 30% auto;
  20. grid-template-rows: 100px auto 100px;
  21. /* 比例 */
  22. grid-template-columns: 1fr 2fr 2fr;
  23. grid-template-rows: 1fr auto 2fr;
  24. /* 重复设置 */
  25. grid-template-columns: repeat(3, 100px);
  26. grid-template-rows: repeat(3, 100px);
  27. /* 按分组来设置: (50px-100px) */
  28. /* 50px 100px 50px 100px */
  29. grid-template-columns: repeat(2, 50px 100px);
  30. /* 弹性 */
  31. grid-template-columns: repeat(2, minmax(50px, 100px));
  32. grid-template-rows: repeat(3, minmax(150px, 1fr));
  33. /* 自动填充 */
  34. grid-template-columns: repeat(auto-fill, 100px);
  35. grid-template-rows: repeat(auto-fill, 100px);
  36. }
  37. .item {
  38. background-color: lightblue;
  39. font-size: 2rem;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <div class="container">
  45. <div class="item item1">1</div>
  46. <div class="item item2">2</div>
  47. <div class="item item3">3</div>
  48. <div class="item item4">4</div>
  49. <div class="item item5">5</div>
  50. <div class="item item6">6</div>
  51. <div class="item item7">7</div>
  52. </div>
  53. </body>
  54. </html>

示例3

  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. grid-template-columns: repeat(4, 1fr);
  16. grid-template-rows: repeat(4, 1fr);
  17. }
  18. .item {
  19. font-size: 2rem;
  20. }
  21. .item.item1 {
  22. background-color: lightgreen;
  23. grid-row-start: 1;
  24. grid-row-end: 3;
  25. grid-column-start: 1;
  26. grid-column-end: 3;
  27. /* grid-row-start: -1;
  28. grid-row-end: -3;
  29. grid-column-start: -1;
  30. grid-column-end: -3; */
  31. /* grid-row-start: 2;
  32. grid-row-end: 4;
  33. grid-column-start: 2;
  34. grid-column-end: 4;
  35. grid-row-start: 1;
  36. grid-row-end: -1;
  37. grid-column-start: 1;
  38. grid-column-end: -1; */
  39. }
  40. /* 简写 */
  41. .item.item2 {
  42. background-color: lightpink;
  43. /* grid-row-start: 1;
  44. grid-row-end: 3;
  45. grid-column-start: 3;
  46. grid-column-end: 5; */
  47. grid-row: 1 / 3;
  48. grid-column: 3 / 5;
  49. }
  50. /* 使用偏移量来简化, 将第三个移动到左下角 */
  51. .item.item3 {
  52. background-color: yellow;
  53. /*grid-row-start: 3;
  54. grid-row-end: span 2;
  55. grid-column-start: 1;
  56. grid-column-end: span 2; */
  57. grid-row: 3 / span 2;
  58. grid-column: 1 / span 2;
  59. }
  60. .item.item4 {
  61. background-color: lightgrey;
  62. /* grid-row-start: 3; */
  63. grid-row-end: span 2;
  64. /* grid-column-start: 3; */
  65. grid-column-end: span 2;
  66. }
  67. </style>
  68. </head>
  69. <body>
  70. <div class="container">
  71. <div class="item item1">1</div>
  72. <div class="item item2">2</div>
  73. <div class="item item3">3</div>
  74. <div class="item item4">4</div>
  75. </div>
  76. </body>
  77. </html>

5.总结

Grid,真的布局神器。Css在引入Flex布局和Grid布局两个模块后,才真正有了布局的概念。Flex负责一维布局,Grid负责二维布局,两个布局都非常强大,但属性是真的很多。我是有点记不过来了。还是需要多多加强练习啊。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:属性名称是有规律的
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学