grid.jpg

  • flex是一维布局,grid是二维布局,横纵两个方向总是同时存在的

    1.作用在grid容器

  • display:gird;

  • grid-template-columns 对网格进行纵划分,单位可以是px,%,自适应auto,fr(网格剩余空间比例单位)
  • grid-template-rows 对网格进行横划分,单位可以是px,%,自适应auto,fr ```html <!DOCTYPE html>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
  1. - grid-template-areasgrid子项只要使用 grid-area 属性指定其隶属于哪个区
  2. - grid-template以上三个的简写形式
  3. ```html
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8" />
  8. <title></title>
  9. <style type="text/css">
  10. .box{
  11. width: 600px;
  12. height: 600px;
  13. border:1px dashed #000 ;
  14. display: grid;
  15. /*grid-template-rows:repeat(3,1fr);
  16. grid-template-columns:repeat(3,1fr);
  17. grid-template-areas:
  18. "a1 a1 a1"
  19. "a2 a2 a3"
  20. "a2 a2 a3";*/
  21. grid-template:
  22. "a1 a1 a1" 1fr
  23. "a2 a2 a3" 1fr
  24. "a2 a2 a3" 1fr
  25. /1fr 1fr 1fr;
  26. }
  27. .box>div{
  28. border:1px solid red ;
  29. }
  30. .box>div:nth-child(1){
  31. grid-area:a1;
  32. }
  33. .box>div:nth-child(2){
  34. grid-area:a2;
  35. }
  36. .box>div:nth-child(3){
  37. grid-area:a3;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="box">
  43. <div>1</div>
  44. <div>2</div>
  45. <div>3</div>
  46. </div>
  47. </body>
  48. </html>
  • grid-column-gap 定义网格间隙
  • grid-row-gap 定义网格间隙
    • grid-gap以上两个简写,先写行间距,再写列间距
  • justify-items网格元素内容水平呈现方式:拉伸stretch/左中右对齐start/end/center
  • align-items网格元素内容垂直呈现方式:拉伸stretch/上中下对齐start/end/center
    • place-items以上两个简写,第一个垂直,第二个水平 ```html <!DOCTYPE html>
      1
      2
      3
      4
      5
      6
      7
      8
      9
  1. - 容器需要调大下使用:
  2. - justify-content网格元素水平分布方式stretch/start/end/center/space-between/space-around/space-evenly
  3. - align-content网格元素垂直分布方式
  4. - place-content以上简写
  5. ```html
  6. <!DOCTYPE html>
  7. <html>
  8. <head>
  9. <meta charset="utf-8" />
  10. <title></title>
  11. <style type="text/css">
  12. .box{
  13. width: 600px;
  14. height: 600px;
  15. border:1px dashed #000 ;
  16. display: grid;
  17. grid-template-rows:repeat(3,100px);
  18. grid-template-columns:repeat(3,100px);
  19. justify-content:space-evenly;
  20. }
  21. .box>div{
  22. border:1px solid red ;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="box">
  28. <div>1</div>
  29. <div>2</div>
  30. <div>3</div>
  31. <div>4</div>
  32. <div>5</div>
  33. <div>6</div>
  34. <div>7</div>
  35. <div>8</div>
  36. <div>9</div>
  37. </div>
  38. </body>
  39. </html>

2.作用在grid子项上

  • 1.grid-column-start水平方向上占据的起始位置
  • 2.grid-column-end水平方向上占据的结束位置(span属性)向后添加的个数
  • 3.grid-row-start垂直方向上占据的起始位置
  • 4.grid-row-end垂直方向上占据的结束位置(span属性)
    • grid-column:1和2的缩写
    • grid-row:3和4的缩写
      • 例grid-column:2 / 4; ```html <!DOCTYPE html>
        1
  1. - 5.grid-area当前网格所占用的区域
  2. - grid-area3横向起始/2纵向起始/4横向结束/4纵向结束
  3. ```html
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8" />
  8. <title></title>
  9. <style type="text/css">
  10. .box{
  11. width: 600px;
  12. height: 600px;
  13. border:1px dashed #000 ;
  14. display: grid;
  15. grid-template-rows:repeat(3,1fr);
  16. grid-template-columns:repeat(3,1fr);
  17. }
  18. .box>div{
  19. border:1px solid red ;
  20. grid-area:3/2/4/4;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="box">
  26. <div>1</div>
  27. </div>
  28. </body>
  29. </html>
  • 6.justify-self单个网格元素的水平对齐方式start/end/center
  • 7.align-self单个网格元素的垂直对齐方式
    • place-self:6和7的缩写,先写垂直,再写水平 ```html <!DOCTYPE html>
      1
      2
      3
      4
      5
      6
      7
      8
      9

```