Blogger Information
Blog 32
fans 0
comment 0
visits 27417
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
初识Grid布局
Yang_Sir
Original
633 people have browsed it

Grid 网格布局

1. 什么是网格布局

  • 网格布局是二维系统
  • 通过横竖线把容器分割成多个网格,然后设置元素在网格上的排列方式。

2.创建grid容器

  • 通过容器的display属性声明布局方式为grid
  • grid-auto-flow: 声明项目在网格中自动填充方案(行优先/列优先)
  • grid-template-columns/rows: 在容器中显式地划分行与列,生成指定数量的网格来放置项目,超出数量的项目会填充到隐式网格中
  • grid-auto-rows/columns: 根据项目数量,在容器中隐式生成行与列来放置它们
  • 示例:
  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. background-color: rgb(151, 73, 73);
  6. display: grid;
  7. /*设置填充方式为列优先*/
  8. grid-auto-flow: column;
  9. /*显式划分3列,2行*/
  10. grid-template-columns: repeat(3,100px);
  11. grid-template-rows: repeat(2,100px);
  12. /*设置隐式网格的宽高,列优先时行高会失效,行优先时列宽失效*/
  13. grid-auto-columns: 200px;
  14. grid-auto-rows: 150px;
  15. }
  16. .item{
  17. /* height: 100px;
  18. width: 100px; */
  19. background-color: lightblue;
  20. }
  21. </style>
  22. <div class="container">
  23. <div class="item item1">1</div>
  24. <div class="item item2">2</div>
  25. <div class="item item3">3</div>
  26. <div class="item item4">4</div>
  27. <div class="item item5">5</div>
  28. <div class="item item6">6</div>
  29. <div class="item item7">7</div>
  30. <div class="item item8">8</div>
  31. </div>

3.项目在容器中的填充方式

3.1 使用网格线定位单元格

  • 默认从左上角开始,从左到右,从上到下,依次从 1 开始编号
  • 如果从右下角开始,由下向上,由右向左,依次由从-1 开始编号
  • 根据数字网格线,可以将项目放到网格线形成的封闭矩形区域中
  • 项目属性:grid-row、grid-column
  • 示例:
  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. background-color: rgb(151, 73, 73);
  6. display: grid;
  7. grid-template-columns: repeat(3,100px);
  8. grid-template-rows: repeat(2,100px);
  9. }
  10. .item{
  11. font-size: 2rem;
  12. background-color: lightblue;
  13. }
  14. .item.item1{
  15. grid-row: 1 / span 2;
  16. /* grid-column: 1/span 2; */
  17. background-color: wheat;
  18. }
  19. .item.item2{
  20. grid-column: 2 / 4;
  21. /* grid-column: 1/span 2; */
  22. background-color: pink;
  23. }
  24. </style>
  25. <div class="container">
  26. <div class="item item1">1</div>
  27. <div class="item item2">2</div>
  28. <div class="item item3">3</div>
  29. </div>

3.2 网格区域

  • grid-template-areas:可以为每一个网格区域设置一个语义化的名称
  • 具有名称的网络区域称之为命名区域
  • 名称相同的网格区域会合并, 形成更大的区域空间
  • 项目设置的区域名称后,会自动填充到容器中应对的命名区域中
  • 设置项目属性grid-area: 将项目填充到指定容器的区域中
  • 语法: grid-area: 起始行 / 起始列 / 结束行 / 结束列
  • 示例:
  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. background-color: rgb(151, 73, 73);
  6. display: grid;
  7. grid-template-columns: repeat(4,100px);
  8. grid-template-rows: repeat(4,100px);
  9. grid-template-areas:
  10. "area1 area1 area1 area2"
  11. "area4 . . area2"
  12. "area4 . . area2"
  13. "area4 area3 area3 area3";
  14. }
  15. .item{
  16. font-size: 2rem;
  17. background-color: lightblue;
  18. }
  19. .item.item1{
  20. grid-area: area1;
  21. background-color: blue;
  22. }
  23. .item.item2{
  24. grid-area: area2;
  25. background-color:green;
  26. }
  27. .item.item3{
  28. grid-area: area3;
  29. background-color: yellow;
  30. }
  31. .item.item4{
  32. grid-area: area4;
  33. background-color: violet;
  34. }
  35. </style>
  36. <div class="container">
  37. <div class="item item1">1</div>
  38. <div class="item item2">2</div>
  39. <div class="item item3">3</div>
  40. <div class="item item4">4</div>
  41. </div>

4. 项目的对齐方式

4.1 所有项目在容器中的对齐方式

  • 所有项目作为一个整体
  • justify-content: 设置所有项目在容器中水平方向的对齐方式
  • align-content: 设置所有项目在容器中垂直方向的对齐方式
  • place-content: 上面二个属性的简写, place-content: 垂直对齐方式 水平对齐方式
  • 要有剩余空间才有意义

  • 示例:

  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. background-color: rgb(151, 73, 73);
  6. display: grid;
  7. grid-template-columns: repeat(3,100px);
  8. grid-template-rows: repeat(3,100px);
  9. justify-content: center;
  10. align-content: center;
  11. }
  12. .item{
  13. font-size: 2rem;
  14. background-color: lightblue;
  15. }
  16. </style>
  17. <div class="container">
  18. <div class="item item1">1</div>
  19. <div class="item item2">2</div>
  20. <div class="item item3">3</div>
  21. <div class="item item4">4</div>
  22. <div class="item item5">5</div>
  23. </div>

4.2 所有项目在网格的对齐方式

  • justify-items: 设置所有项目在单元格/网格区域中水平方向的对齐方式
  • align-items: 设置所有项目在单元格/网格区域中垂直方向的对齐方式
  • place-items: 上面二个属性的简写, place-items: 垂直对齐方式 水平对齐方式
  • 示例:
  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. background-color: rgb(151, 73, 73);
  6. display: grid;
  7. grid-template-columns: repeat(4,100px);
  8. grid-template-rows: repeat(4,100px);
  9. justify-items: center;
  10. align-items: center;
  11. }
  12. .item{
  13. width: 60px;
  14. height: 60px;
  15. font-size: 2rem;
  16. background-color: lightblue;
  17. }
  18. </style>
  19. <div class="container">
  20. <div class="item item1">1</div>
  21. <div class="item item2">2</div>
  22. <div class="item item3">3</div>
  23. <div class="item item4">4</div>
  24. <div class="item item5">5</div>
  25. </div>

4.3 设置某个项目在网格内的对齐方式

  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. background-color: rgb(151, 73, 73);
  6. display: grid;
  7. grid-template-columns: repeat(4,100px);
  8. grid-template-rows: repeat(4,100px);
  9. grid-template-areas:
  10. ". area1 area1 area1 ";
  11. }
  12. .item{
  13. height: 60px;
  14. width: 60px;;
  15. font-size: 2rem;
  16. background-color: lightblue;
  17. }
  18. .item.item1{
  19. width: 180px;
  20. grid-area: area1;
  21. background-color: yellow;
  22. place-self: center;
  23. }
  24. .item.item2{
  25. background-color: red;
  26. place-self: center end;
  27. }
  28. </style>
  29. <div class="container">
  30. <div class="item item1">1</div>
  31. <div class="item item2">2</div>
  32. <div class="item item3">3</div>
  33. <div class="item item4">4</div>
  34. <div class="item item5">5</div>
  35. </div>

5. 容器中行与列之间的间距

  • column-gap: 列间距
  • row-gap: 行间距
  • gap: 行间距 列间距: 简写
  1. <style>
  2. .container{
  3. height: 400px;
  4. width: 400px;
  5. display: grid;
  6. grid-template-columns: repeat(3,100px);
  7. grid-template-rows: repeat(3,100px);
  8. gap:20px 10px;
  9. }
  10. .item{
  11. background-color: green;
  12. }
  13. </style>
  14. <div class="container">
  15. <div class="item item1">1</div>
  16. <div class="item item2">2</div>
  17. <div class="item item3">3</div>
  18. <div class="item item4">4</div>
  19. <div class="item item5">5</div>
  20. </div>

6. 课程总结

  • grig作为二维的栅格布局方式,用于整体页面规划非常方便
  • grid可以使用行号,名称或网格区域将项目放置在网格上的精确位置。
  • 还可以通过设置隐式网格,设置未在显式网格上显示的项目的放置
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!