经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
css中grid属性的使用详解_CSS教程_CSS
来源:jb51  时间:2018/10/29 9:35:54  对本文有异议

grid布局

加在父元素上的属性

grid-template-columns/grid-template-rows

  • 定义元素的行或列的宽高
  • 如果父元素被等分成了9等分,则,不管有多少个子元素,都显示9等分
  • grid-template-columns: 33% 33% 33%;可以写成grid-template-columns:repeat(3, 33%);
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13. .container1 {
  14. grid-template-columns: 33% 33% 33%;
  15. grid-template-rows: 33% 33% 33%;
  16. }

grid-template-areas

  • 父元素的grid-template-areas配合子元素的grid-area定义网格区域
  • 一个句点表示一个空的网格单元
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13. .container2 {
  14. grid-template-columns: 1fr 1fr 1fr 1fr;
  15. grid-template-rows: 1fr 1fr 1fr;
  16. grid-template-areas: "header header . footer"
  17. "main main . sidebar"
  18. "main main . sidebar";
  19. }
  20.  
  21. .container2 .item-1 {
  22. grid-area: header;
  23. }
  24.  
  25. .container2 .item-2 {
  26. grid-area: main;
  27. }
  28.  
  29. .container2 .item-3 {
  30. grid-area: sidebar;
  31. }
  32.  
  33. .container2 .item-4 {
  34. grid-area: footer;
  35. }
  1. <div class="container container2">
  2. <div class="item item-1">header</div>
  3. <div class="item item-2">main</div>
  4. <div class="item item-3">sidebar</div>
  5. <div class="item item-4">footer</div>
  6. </div>

grid-column-gap/grid-row-gap/grip-gap

  • 指网格线的大小,也可以说是网格子项之间的间距
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13. .container3 {
  14. grid-template-columns: repeat(3, 30%);
  15. grid-template-rows: repeat(3, 30%);
  16. grid-column-gap: 2%;
  17. grid-row-gap: 2%;
  18. }
  1. <div class="container container3">
  2. <div class="item item-1"></div>
  3. <div class="item item-2"></div>
  4. <div class="item item-3"></div>
  5. <div class="item item-4"></div>
  6. <div class="item item-5"></div>
  7. <div class="item item-6"></div>
  8. <div class="item item-7"></div>
  9. <div class="item item-8"></div>
  10. <div class="item item-9"></div>
  11. </div>

justify-items/align-itemsjustify-items

  • 让子元素的内容和纵向列轴对齐
  • align-items让子元素的内容和横向行轴对齐
  • 两个属性都有四个值
  • 我的例子中,为了方便对比,嵌套了grid网格
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13.  
  14. .container4 {
  15. width: 400px;
  16. height: 200px;
  17. grid-template-columns: repeat(4, 25%);
  18. grid-template-rows: repeat(2, 50%);
  19. }
  20. .container4 .item {
  21. display: grid;
  22. }
  23. .container4 .item div {
  24. background-color: coral;
  25. border: 1px dashed #aaa
  26. }
  27. .container4 .item-1 {
  28. grid-template-columns: repeat(2, 50%);
  29. grid-template-rows: repeat(2, 50%);
  30. justify-items: start;
  31. }
  32. .container4 .item-2 {
  33. grid-template-columns: repeat(2, 50%);
  34. grid-template-rows: repeat(2, 50%);
  35. justify-items: end;
  36. }
  37. .container4 .item-3 {
  38. grid-template-columns: repeat(2, 50%);
  39. grid-template-rows: repeat(2, 50%);
  40. justify-items: center;
  41. }
  42. .container4 .item-4 {
  43. grid-template-columns: repeat(2, 50%);
  44. grid-template-rows: repeat(2, 50%);
  45. justify-items: stretch;
  46. }
  47. .container4 .item-5 {
  48. grid-template-columns: repeat(2, 50%);
  49. grid-template-rows: repeat(2, 50%);
  50. align-items: start;
  51. }
  52. .container4 .item-6 {
  53. grid-template-columns: repeat(2, 50%);
  54. grid-template-rows: repeat(2, 50%);
  55. align-items: end;
  56. }
  57. .container4 .item-7 {
  58. grid-template-columns: repeat(2, 50%);
  59. grid-template-rows: repeat(2, 50%);
  60. align-items: center;
  61. }
  62. .container4 .item-8 {
  63. grid-template-columns: repeat(2, 50%);
  64. grid-template-rows: repeat(2, 50%);
  65. align-items: stretch;
  66. }
  1. <div class="container container4">
  2. <div class="item item-1">
  3. <div>list</div>
  4. <div>list</div>
  5. <div>list</div>
  6. <div>list</div>
  7. </div>
  8. <div class="item item-2">
  9. <div>list</div>
  10. <div>list</div>
  11. <div>list</div>
  12. <div>list</div>
  13. </div>
  14. <div class="item item-3">
  15. <div>list</div>
  16. <div>list</div>
  17. <div>list</div>
  18. <div>list</div>
  19. </div>
  20. <div class="item item-4">
  21. <div>list</div>
  22. <div>list</div>
  23. <div>list</div>
  24. <div>list</div>
  25. </div>
  26. <div class="item item-5">
  27. <div>list</div>
  28. <div>list</div>
  29. <div>list</div>
  30. <div>list</div>
  31. </div>
  32. <div class="item item-6">
  33. <div>list</div>
  34. <div>list</div>
  35. <div>list</div>
  36. <div>list</div>
  37. </div>
  38. <div class="item item-7">
  39. <div>list</div>
  40. <div>list</div>
  41. <div>list</div>
  42. <div>list</div>
  43. </div>
  44. <div class="item item-8">
  45. <div>list</div>
  46. <div>list</div>
  47. <div>list</div>
  48. <div>list</div>
  49. </div>

justify-content/align-content

  • 设置子元素的对齐方式,justify表示纵向,align表示横向
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13.  
  14. .container5 {
  15. width: 700px;
  16. height: 200px;
  17. grid-template-columns: repeat(7, 14%);
  18. grid-template-rows: repeat(2, 50%);
  19. }
  20.  
  21. .container5 .item {
  22. display: grid;
  23. }
  24.  
  25. .container5 .item div {
  26. background-color: coral;
  27. border: 1px dashed #aaa
  28. }
  29.  
  30. .container5 .item-1 {
  31. grid-template-columns: repeat(2, 40%);
  32. grid-template-rows: repeat(2, 40%);
  33. justify-content: start;
  34. }
  35.  
  36. .container5 .item-2 {
  37. grid-template-columns: repeat(2, 40%);
  38. grid-template-rows: repeat(2, 40%);
  39. justify-content: end;
  40. }
  41.  
  42. .container5 .item-3 {
  43. grid-template-columns: repeat(2, 40%);
  44. grid-template-rows: repeat(2, 40%);
  45. justify-content: center;
  46. }
  47.  
  48. .container5 .item-4 {
  49. grid-template-columns: repeat(2, 40%);
  50. grid-template-rows: repeat(2, 40%);
  51. justify-content: stretch;
  52. }
  53.  
  54. .container5 .item-5 {
  55. grid-template-columns: repeat(2, 40%);
  56. grid-template-rows: repeat(2, 40%);
  57. justify-content: space-around;
  58. }
  59.  
  60. .container5 .item-6 {
  61. grid-template-columns: repeat(2, 40%);
  62. grid-template-rows: repeat(2, 40%);
  63. justify-content: space-between;
  64. }
  65.  
  66. .container5 .item-7 {
  67. grid-template-columns: repeat(2, 40%);
  68. grid-template-rows: repeat(2, 40%);
  69. justify-content: space-evenly;
  70. }
  71.  
  72. .container5 .item-8 {
  73. grid-template-columns: repeat(2, 40%);
  74. grid-template-rows: repeat(2, 40%);
  75. align-content: start;
  76. }
  77.  
  78. .container5 .item-9 {
  79. grid-template-columns: repeat(2, 40%);
  80. grid-template-rows: repeat(2, 40%);
  81. align-content: end;
  82. }
  83.  
  84. .container5 .item-10 {
  85. grid-template-columns: repeat(2, 40%);
  86. grid-template-rows: repeat(2, 40%);
  87. align-content: center;
  88. }
  89.  
  90. .container5 .item-11 {
  91. grid-template-columns: repeat(2, 40%);
  92. grid-template-rows: repeat(2, 40%);
  93. align-content: stretch;
  94. }
  95.  
  96. .container5 .item-12 {
  97. grid-template-columns: repeat(2, 40%);
  98. grid-template-rows: repeat(2, 40%);
  99. align-content: space-around;
  100. }
  101.  
  102. .container5 .item-13 {
  103. grid-template-columns: repeat(2, 40%);
  104. grid-template-rows: repeat(2, 40%);
  105. align-content: space-between;
  106. }
  107.  
  108. .container5 .item-14 {
  109. grid-template-columns: repeat(2, 40%);
  110. grid-template-rows: repeat(2, 40%);
  111. align-content: space-evenly;
  112. }
  1. <div class="container container5">
  2. <div class="item item-1">
  3. <div>list</div>
  4. <div>list</div>
  5. <div>list</div>
  6. <div>list</div>
  7. </div>
  8. <div class="item item-2">
  9. <div>list</div>
  10. <div>list</div>
  11. <div>list</div>
  12. <div>list</div>
  13. </div>
  14. <div class="item item-3">
  15. <div>list</div>
  16. <div>list</div>
  17. <div>list</div>
  18. <div>list</div>
  19. </div>
  20. <div class="item item-4">
  21. <div>list</div>
  22. <div>list</div>
  23. <div>list</div>
  24. <div>list</div>
  25. </div>
  26. <div class="item item-5">
  27. <div>list</div>
  28. <div>list</div>
  29. <div>list</div>
  30. <div>list</div>
  31. </div>
  32. <div class="item item-6">
  33. <div>list</div>
  34. <div>list</div>
  35. <div>list</div>
  36. <div>list</div>
  37. </div>
  38. <div class="item item-7">
  39. <div>list</div>
  40. <div>list</div>
  41. <div>list</div>
  42. <div>list</div>
  43. </div>
  44. <div class="item item-8">
  45. <div>list</div>
  46. <div>list</div>
  47. <div>list</div>
  48. <div>list</div>
  49. </div>
  50. <div class="item item-9">
  51. <div>list</div>
  52. <div>list</div>
  53. <div>list</div>
  54. <div>list</div>
  55. </div>
  56. <div class="item item-10">
  57. <div>list</div>
  58. <div>list</div>
  59. <div>list</div>
  60. <div>list</div>
  61. </div>
  62. <div class="item item-11">
  63. <div>list</div>
  64. <div>list</div>
  65. <div>list</div>
  66. <div>list</div>
  67. </div>
  68. <div class="item item-12">
  69. <div>list</div>
  70. <div>list</div>
  71. <div>list</div>
  72. <div>list</div>
  73. </div>
  74. <div class="item item-13">
  75. <div>list</div>
  76. <div>list</div>
  77. <div>list</div>
  78. <div>list</div>
  79. </div>
  80. <div class="item item-14">
  81. <div>list</div>
  82. <div>list</div>
  83. <div>list</div>
  84. <div>list</div>
  85. </div>
  86. </div>

grid-auto-columns/grid-auto-rowsgrid-column

  • 后面的值如果是1 / 2形式,表示的是从第1列网格线开始到第2列网格线结束,如果这个属性定义的网格超出了父元素的范围,则会自动生成隐式网格
  • grid-auto-columns和grid-auto-rows两个属性来指定这些隐式网格轨迹的宽度
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13.  
  14. .container6 {
  15. width: 120px;
  16. height: 180px;
  17. grid-template-columns: 60px 60px;
  18. grid-template-rows: 90px 90px;
  19. grid-auto-columns: 60px;
  20. }
  21. .container6 .item-1 {
  22. grid-column: 1 / 2;
  23. grid-row: 2 / 3;
  24. border: 1px solid #ccc;
  25. }
  26. .container6 .item-2 {
  27. grid-column: 5 / 6;
  28. grid-row: 2 / 3;
  29. border: 1px solid #ccc;
  30. }
  1. <div class="container container6">
  2. <div class="item-1">1/2&2/3</div>
  3. <div class="item-2">5/6&2/3</div>
  4. </div>

grid-auto-flow

  • 没有网格元素的时候,自动排列
  • row表示从左到右排列,column表示从上到下排列
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13.  
  14. .container7 {
  15. display: grid;
  16. width: 200px;
  17. height: 40px;
  18. grid-template-columns: 40px 40px 40px 40px 40px;
  19. grid-template-rows: 40px 40px;
  20. /* grid-auto-flow: row; */
  21. grid-auto-flow: column;
  22. }
  23. .container7 .item-1 {
  24. grid-column: 1;
  25. grid-row: 1 / 3;
  26. }
  27.  
  28. .container7 .item-5 {
  29. grid-column: 5;
  30. grid-row: 1 / 3;
  31. }
  1. <div class="container container7">
  2. <div class="item item-1">1</div>
  3. <div class="item item-2">2</div>
  4. <div class="item item-3">3</div>
  5. <div class="item item-4">4</div>
  6. <div class="item item-5">5</div>
  7. </div>

加在子元素上的属性

grid-column-start/grid-column-end/grid-row-start/grid-row-end/grid-column/grid-row

  • 定义网格开始或者结束的位置
  • 值为数字,表示从这条线开始。值为span加数字,表示覆盖了这条线的位置
  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13.  
  14. .container8 {
  15. margin-top: 20px;
  16. grid-template-columns: repeat(5, 20%);
  17. grid-template-rows: repeat(5, 20%);
  18. }
  19. .container8 .item-1 {
  20. grid-column-start: 2;
  21. grid-column-end: 4;
  22. grid-row-start: 1;
  23. grid-row-end: 2;
  24. }
  25. .container8 .item-2 {
  26. grid-column-start: 4;
  27. grid-column-end: span 5;
  28. grid-row-start: 2;
  29. grid-row-end: span 5;
  30. }
  31. .container8 .item-3 {
  32. grid-column: 1 / span 2;
  33. grid-row: 2 / span 4;
  34. }
  1. <div class="container container8">
  2. <div class="item item-1">item-1</div>
  3. <div class="item item-2">item-2</div>
  4. <div class="item item-3">item-3</div>
  5. </div>

justify-self/align-self

网格子项内容与格线对齐

  1. .container {
  2. width: 200px;
  3. height: 200px;
  4. display: grid;
  5. background-color: coral;
  6. margin: 10px;
  7. }
  8.  
  9. .container .item {
  10. border: 1px solid #ccc;
  11. background-color: chocolate;
  12. }
  13. .container9 {
  14. width: 400px;
  15. height: 200px;
  16. grid-template-columns: repeat(4, 25%);
  17. grid-template-rows: repeat(2, 50%);
  18. }
  19. .container9 .item-1 {
  20. justify-self: start;
  21. }
  22. .container9 .item-2 {
  23. justify-self: end;
  24. }
  25. .container9 .item-3 {
  26. justify-self: center;
  27. }
  28. .container9 .item-4 {
  29. justify-self: stretch;
  30. }
  31. .container9 .item-5 {
  32. align-self: start;
  33. }
  34. .container9 .item-6 {
  35. align-self: end;
  36. }
  37. .container9 .item-7 {
  38. align-self: center;
  39. }
  40. .container9 .item-8 {
  41. align-self: stretch;
  42. }
  1. <div class="container container9">
  2. <div class="item item-1">item-1</div>
  3. <div class="item item-2">item-2</div>
  4. <div class="item item-3">item-3</div>
  5. <div class="item item-4">item-4</div>
  6. <div class="item item-5">item-5</div>
  7. <div class="item item-6">item-6</div>
  8. <div class="item item-7">item-7</div>
  9. <div class="item item-8">item-8</div>
  10. </div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号