PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > grid实现12列栅格布局的组件并且实例圣杯布局

grid实现12列栅格布局的组件并且实例圣杯布局

JiaJieChen
JiaJieChen 原创
2021年03月31日 09:32:01 965浏览

grid实现12列栅格布局的组件并且实例圣杯布局

1.建立12列栅格布局组件

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. box-sizing: border-box;
  5. }
  6. /* 建立body是 grid主体 并且定义让多行容器居中 */
  7. body {
  8. /* border: 1px solid; */
  9. width: 100vw;
  10. height: 100vh;
  11. display: grid;
  12. place-content: center;
  13. }
  14. .container {
  15. width: 80vw;
  16. display: grid;
  17. gap: 0.5em;
  18. }
  19. .container > .row {
  20. /* 定义这行是gird容器,并且分成12列 */
  21. display: grid;
  22. /* 用repeat函数块数分列 */
  23. grid-template-columns: repeat(12, 1fr);
  24. min-height: 3em;
  25. gap: 0.5em;
  26. }
  27. .container .row .item {
  28. border: 1px solid;
  29. padding: 1em;
  30. background: lime;
  31. }
  32. /* 设置项目 列数合并从1到12列 */
  33. .columns-12 {
  34. grid-area: auto / span 12;
  35. }
  36. .columns-11 {
  37. grid-area: auto / span 11;
  38. }
  39. .columns-10 {
  40. grid-area: auto / span 10;
  41. }
  42. .columns-9 {
  43. grid-area: auto / span 9;
  44. }
  45. .columns-8 {
  46. grid-area: auto / span 8;
  47. }
  48. .columns-7 {
  49. grid-area: auto / span 7;
  50. }
  51. .columns-6 {
  52. grid-area: auto / span 6;
  53. }
  54. .columns-5 {
  55. grid-area: auto / span 5;
  56. }
  57. .columns-4 {
  58. grid-area: auto / span 4;
  59. }
  60. .columns-3 {
  61. grid-area: auto / span 3;
  62. }
  63. .columns-2 {
  64. grid-area: auto / span 2;
  65. }
  66. .columns-1 {
  67. grid-area: auto / span 1;
  68. }

建立的好处就是,只要你想布局,可以随时利用里面的小组件,按照你自己的想法来实现布局,下面来实现一个经典的圣杯布局。

2.圣杯布局

如果传统方式用flex或者定位来做这个布局的话,非常的麻烦,而grid不到10行代码就可以把这个布局给写出来,当然,要用到我们上面写好的小组件才行,现在我们来看看是怎么样写的。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>grid圣杯布局</title>
  8. <style type="text/css">
  9. @import url(grid.css);
  10. .row:nth-of-type(2){
  11. height: 80vh;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <!-- 页眉 -->
  17. <div class="container">
  18. <div class="row">
  19. <div class="item columns-12">header</div>
  20. </div>
  21. <!-- 主体 -->
  22. <!-- 分成2列 8列 2列的形式 -->
  23. <div class="row">
  24. <div class="item columns-2" style="background: violet;">left</div>
  25. <div class="item columns-8" style="background:lawngreen;"> main</div>
  26. <div class="item columns-2" style="background: violet;">right</div>
  27. </div>
  28. <!-- 页脚 -->
  29. <div class="row">
  30. <div class="item columns-12">footer</div>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. </body>
  36. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议