Grid网格布局

网格布局是多行多列的终极解决方案。

一、设置父元素display:grid 生成网格布局,其所有子元素为网格项目,如下代码所示:

  <style>
    .container {
         width: 300px;
      height: 200px;
      margin: 0 auto;
      border: 2px solid #ccc;
    }

    .item {
      background: #f19752;
      border: 2px solid #ee772f;
      text-align: center;
      line-height: 50px;
      font-size: 1em;
    }
    .container {
      display: grid;
      /*3列,每列宽度50px*/
      grid-template-columns: 50px 50px 50px;
      /*2行,每行高度30px */
      grid-template-rows: 50px 50px;
      ;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
    <div class="item">6</div>
  </div>
</body>

</html>

在这里插入图片描述

grid-template-rows:用于定义行
grid-template-columns:用于定义列
他们语法一样,具体用法如下所示:

1. grid-template-columns: 50px 100px 150px;
3列,列宽分别为50px 100px 150px

2. grid-template-columns: repeat(3, 100px);
3列,列宽统一为80px
在这里插入图片描述

3.grid-template-columns: 50px 1fr 1fr;
3列,第1列宽度为50px,第2列和第三列按照1:1的比例占据剩余空间
在这里插入图片描述

4.grid-template-columns: repeat(3, 1fr);
3列,平等平分容器

二、改变列的方向

使用属性grid-auto-flow: column;可以使子元素按列排放,如下代码所示

.container {
      display: grid;
      /*3列,平等平分容器*/
      grid-template-columns: repeat(3, 1fr);
      /*2列,每行高度30px */
      grid-template-rows: 50px 50px 50px;
      grid-auto-flow: column;
    }

在这里插入图片描述

三、单元格之间的间隙

    .container {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-template-rows: repeat(3, 1fr);
      /*行间隙为10px*/
      row-gap: 10px;
      /*列间隙为20px*/
      column-gap: 20px;
      /* 行间隙为10 列间隙为20px*/
      gap: 10px 20px;
    }

在这里插入图片描述

四、单元格内部对齐

默认情况下,网格项目在单元格内部水平和垂直拉伸,以撑满单元格。
使用属性justify-items设置水平方向的排列方式
使用属性align-items设置垂直方向的排列方式
他们的可选值如下:

justify-items:start 左| end 右| center 中| stretch 拉伸
align-items:start 左| end 右| center 中| stretch 拉伸

grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 1fr);
justify-items: center;
align-items: center;

在这里插入图片描述
可以使用速写属性place-items: 垂直对齐方向 水平对齐方式 同时设置这两个值;

 place-items: center center;

五、网格项目定位

默认情况网格项目依次排列在单元格,每个网格占据一个单元格,可以使用grid-area改变这种形式。
使用方式如下:

grid-area:起始行线编号/起始列线编号/结束行线编号/结束列线编号 ;
:
grid-area:1/2/3/4

如下图所示点击grid可以查看编号:
在这里插入图片描述
在这里插入图片描述
这里无需关注负数的编号,可以简化成如下形式。
在这里插入图片描述
橙线代表行编号,蓝线代表列编号
假如我们需要占如下这块区域:
在这里插入图片描述
此时需要该区域的起始点和结束点,如下图所示:
在这里插入图片描述
通过观察我们可以得知起始点是由编号2的行线和编号2的列线相交而成,同理可得结束点是由编号3的行线和编号3的列线相交而成。所以可以得出以下代码:

grid-area: 2/2/3/3;

效果如下:
在这里插入图片描述
完结~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值