当前位置:   article > 正文

CSS栅格布局(Grid)

栅格布局

        今天写页面布局,突然想到了栅格布局,以往习惯了弹性布局,然后发现栅格布局有点香,然后就简单的整理了一下,用于学习与分享。

一、什么是栅格布局

        可以理解为将一个元素分成行列,然后可以设置对应的大小、布局、位置。

二、栅格布局的基本语法

声明栅格

  1. display: grid;
  2. display: inline-grid;

划分行列

  • 使用 grid-template-columns 划分列数

  • 使用 grid-template-rows 划分行数

代码展示及说明

假定一个需求,在一个容器内,左右列表,默认展示4列2行。(画的有点丑,哈哈哈哈)

通过栅格布局进行页面的绘制。

  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>Document</title>
  8. </head>
  9. <body>
  10. <div class="content">
  11. <div class="item">1</div>
  12. <div class="item">2</div>
  13. <div class="item">3</div>
  14. <div class="item">4</div>
  15. <div class="item">5</div>
  16. <div class="item">6</div>
  17. <div class="item">7</div>
  18. <div class="item">8</div>
  19. <div class="item">9</div>
  20. <div class="item">10</div>
  21. <div class="item">11</div>
  22. </div>
  23. </body>
  24. </html>
  25. <style>
  26. .content {
  27. width: 300px;
  28. height: 200px;
  29. background: #fff;
  30. border: 3px solid #F2F30E;
  31. display: grid;
  32. grid-template-columns: 50% 50%;
  33. grid-template-rows: 25% 25% 25% 25%;
  34. justify-content: center;
  35. }
  36. .item{
  37. border-bottom:1px solid red ;
  38. }
  39. </style>

上面代码发现,页面超出部分,高度不是25%了,那是因为容器外的没有设置到25%这个属性,解决方法:设置其余的行大小。

  grid-auto-rows:25% ;

补充

根据px设置大小、auto为自动填充(也可以使用百分比)

  1. div {
  2. grid-template-rows: 100px 100px;
  3. grid-template-columns: 100px 100px 100px;
  4. }

通过repeat设置统一值

  1. div {
  2. grid-template-rows: repeat(2, 50%);
  3. grid-template-columns: repeat(2, 50%);
  4. }

通过auto-fill自动填充

  1. div {
  2. width: 300px;
  3. height: 200px;
  4. display: grid;
  5. grid-template-rows: repeat(auto-fill, 100px);
  6. grid-template-columns: repeat(auto-fill, 100px);
  7. /* 两行三列 (300/100,200/100) */
  8. }

使用fr设置比例

  1. div {
  2. width: 300px;
  3. height: 100px;
  4. display: grid;
  5. grid-template-rows: repeat(2, 1fr);
  6. grid-template-columns: repeat(2, 1fr 2fr);
  7. }

简写形式

  1. /** 简写形式 */
  2. grid-template: 10vh 20vh 10vh/ 30vw 1fr;
  3. grid-template: repeat(3, 100px) / repeat(3, 100px);

行列间距

  • row-gap 行间距
  • coliumn-gap 列间距
  • gap 组合定义
  1. row-gap: 30px;
  2. column-gap: 20px;
  3. gap: 20px 10px;
  4. gap: 20px;/*行列间距都为20px*/

元素定位

样式属性说明
grid-row-start行开始栅格线
grid-row-end行结束栅格线
grid-column-start列开始栅格线
grid-column-end列结束栅格线
  1. grid-row-start/grid-column-start/grid-row-end/grid-column-end
  2. grid-area: 2/2/4/4;/* 2行2列开始,4行4列结束*/

栅格对齐

  1. justify-content    所有栅格在容器中的水平对齐方式,容器有额外空间时    栅格容器
  2. align-content    所有栅格在容器中的垂直对齐方式,容器有额外空间时    栅格容器
  3. align-items    栅格内所有元素的垂直排列方式    栅格容器
  4. justify-items    栅格内所有元素的横向排列方式    栅格容器

三、扩展

        有不懂的可以相互交流,或者查看官网,本文更适用于作者本人记录总结。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/295564
推荐阅读
相关标签
  

闽ICP备14008679号