Blogger Information
Blog 62
fans 2
comment 1
visits 42279
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
12 grid的基本操作
老黑
Original
673 people have browsed it

主要内容:

  1. grid的介绍
  2. grid基本属性
  3. item填充及简写
  4. 跨界区块操作

1、grid的介绍

① grid: 网格。基本术语包括

  • 容器: 使用网格布局的元素
  • 项目: 容器中的子元素
  • 网格线: 将容器划分为行与列的直线
  • 显式网络: 由用户根据项目数量指示容器生成的网格
  • 隐式网格: 由容器根据项目数量自动生成的网格
  • 单元格: 项目放置的具体空间
  • 网格区域: 一个以上的单元格组成的矩形区域

② 与flex的基本区别
flex : 容器 ===》 项目
grid: 容器 ===》 单元格 ===》 项目
想建立容器,然后建立单元格,最后再放入项目。

2、grid基本属性

  1. <style>
  2. .container {
  3. width: 300px;
  4. height: 300px;
  5. display: grid;
  6. grid-template-columns: 100px 100px 100px;
  7. grid-template-rows: 100px 100px 100px;
  8. /*上面的就相当于建立三列三行,每列每行的间距为100px。
  9. 当然这个地方也可以用fr,eg 1fr,自动宽度*/
  10. }
  11. .container > .item {
  12. border: 1px solid #000;background-color: lightgreen;
  13. }
  14. </style>
  • 如果间隔等距离一样,也可以用repeat简化快速创建

    1. .container {
    2. width: 500px;
    3. height: 300px;
    4. display: grid;
    5. grid-template-columns: repeat(5, 100px);
    6. grid-template-rows: repeat(3, 100px);
  • 网格线的设置
    1. column-gap: 5px;
    2. row-gap: 5px;
    3. /* 如果都一样,也可以简化成 */
    4. gap: 5px;

3、item的填充

item部分:

  1. <div class="container">
  2. <div class="item">header</div>
  3. <div class="item">left</div>
  4. <div class="item">main</div>
  5. <div class="item">right</div>
  6. <div class="item">footer</div>
  7. </div>

css部分

  1. <style>
  2. .container {
  3. width: 300px;
  4. height: 300px;
  5. display: grid;
  6. grid-template-columns: 40px 1fr 40px;
  7. grid-template-rows: 30px 1fr 30px;
  8. }
  9. .container > .item:first-of-type {
  10. background-color: lightgreen;
  11. /* grid-column-start: 1;
  12. grid-column-end: 2;
  13. grid-row-start: 1;
  14. grid-row-end: 2; */
  15. /* grid-column-start: 3;
  16. grid-column-end: 4;
  17. grid-row-start: 2;
  18. grid-row-end: 3; */
  19. /* 默认总是跨越一行或一列,因此也可以简写 */
  20. /* grid-column-start: 3;
  21. grid-row-start: 2; */
  22. /* 将项目放到多个网格区域中:跨网格 */
  23. /* grid-column-start: 2;
  24. grid-column-end: 4;
  25. grid-row-start: 2;
  26. grid-row-end: 4; */
  27. /* 也可以这样写,行与列的跨越 */
  28. /* grid-column-start: 2;
  29. grid-column-end: span 2;
  30. grid-row-start: 2;
  31. grid-row-end: span 2; */
  32. /* 简化 */
  33. /* grid-column: 起始列号 / 结束列号;
  34. grid-row: 起始行号 / 结束行号 */
  35. /* grid-column: 2 / 4; */
  36. /* grid-column: 2 / span 2; */
  37. /* grid-row: 2 / 4; */
  38. /* grid-row: 2 / span 2; */
  39. /* 跨越整行 */
  40. /* grid-column: 1 / 4;
  41. grid-column: 1 / span 3; */
  42. /* 使用负标 */
  43. /* grid-column: 3 / 4; */
  44. /* grid-column: -1 / -3; */
  45. /* 充满整个容器 */
  46. /* grid-column: 1 / span 3;
  47. grid-row: 1 / span 3; */
  48. /* 根据项目的当前默认位置进行简化。默认为1 1 */
  49. /* grid-column: span 3;
  50. grid-row: span 3; */
  51. /* 想写得更加的直观 */
  52. /* grid-column-start: 1; */
  53. /* grid-column-end: span 3; */
  54. /* grid-row-start: 1; */
  55. /* grid-row-end: span 3; */
  56. /* 示例:header */
  57. /* .container > .item:first-of-type {
  58. grid-column-end: span 3;
  59. } */
  60. /* 这块案例可以省略掉的,因为刚好已经落在了对应的位置 */
  61. /* .container > .item:nth-of-type(2) {
  62. grid-column: 1 / 2;
  63. }
  64. .container > .item:nth-of-type(3) {
  65. grid-column: 2 / 3;
  66. }
  67. .container > .item:nth-of-type(4) {
  68. grid-column: 3 / 4;
  69. } */
  70. .container > .item:first-of-type,
  71. .container > .item:last-of-type {
  72. grid-column-end: span 3;
  73. background-color: lightgreen;
  74. }
  75. </style>

4、快速区块填充(grid-area)

  • css中进行区块命名
  • 用grid-template-areas结合命名进行直观快速填充
  1. div部分

    1. <div class="container">
    2. <div class="item">1</div>
    3. <div class="item">2</div>
    4. </div>
  2. css命名部分

    1. .container {
    2. width: 300px;
    3. height: 300px;
    4. display: grid;
    5. grid-template-columns: repeat(3, 100px);
    6. grid-template-rows: repeat(3, 100px);
    7. /* column-gap: 5px;*/
    8. /* row-gap: 5px; */
    9. /* gap: 5px; */
    10. .container > .item:first-of-type {
    11. background-color: yellow;
    12. /* grid-column-start: 2;
    13. grid-column-end: 4;
    14. grid-row-start: 2;
    15. grid-row-end: 4; */
    16. /* 使用网格区域属性: grid-area */
    17. /* grid-area: 行起始 / 列起始 / 行结束 / 列结束 */
    18. /* grid-area: 2 / 2 / 4 / 4; */
    19. /* grid-area: span 2 / span 2; */
    20. /* 索引网格区域 */
    21. /* grid-area: 2 / 2 / span 2 / span 2; */
    22. /* 命名网格区域 */
    23. grid-area: ye;
    24. }
    25. .container > .item:last-of-type {
    26. background-color: red;
    27. grid-area: re;
    28. }
  3. 直观填充
    1. .container {
    2. grid-template-areas:
    3. "ye ye ye"
    4. ". . ."
    5. "re re re";
    6. }
    7. /* 中间的部分为默认,不管*/

5、用grid快速做一个三列网页

最后的界面是这样的:

  1. <div class="container">
  2. <span class="itme item1"></span>
  3. <a class="itme item2"></a>
  4. <div class="itme item3"></div>
  5. <div class="itme item4"></div>
  6. <div class="itme item5"></div>
  7. </div>

css部分

  1. <style>
  2. .container {
  3. width: 400px;
  4. height: 400px;
  5. background-color: wheat;
  6. display: grid;
  7. /* 划分列 */
  8. grid-template-columns: 80px 1fr 80px;
  9. grid-template-rows: 40px 1fr 40px;
  10. /* 设置区域名称。这块厉害了。 */
  11. grid-template-areas:
  12. "header header header"
  13. "left main right"
  14. "footer footer footer";
  15. }
  16. .item1 {
  17. grid-area: header; /*命名,支持上面的*/
  18. background-color: lightgreen;
  19. }
  20. .item2 {
  21. grid-area: left;
  22. background-color: yellow;
  23. }
  24. .item3 {
  25. grid-area: main;
  26. background-color: lightblue;
  27. }
  28. .item4 {
  29. grid-area: right;
  30. background-color: lightcyan;
  31. }
  32. .item5 {
  33. grid-area: footer;
  34. background-color: lightgreen;
  35. }
  36. </style>
Correcting teacher:GuanhuiGuanhui

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