您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

网格布局

网格其实就是最近比较火的 Grid 布局,原理就是把父元素分割成个的小格子,然后子元素指定自己具体在那个格子上,有点类似于表格布局。

<!DOCTYPE html>
<html lang="en">
<head>
  < charset="UTF-8">
  < name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 清除认样式 */
    * { padding: ; margin: ; }

    /* 令html和body全屏, 并有灰色背景 */
    html, body { height: ; background: gray; }

    /* 找到直接父元素 */
    body {
      /* 为网格布局 */
      display: grid;

      /* 设置垂直方向为两列 */
      grid-template-columns: repeat(, fr);

      /* 列之间距为10像素 */
      gap: px;
    }

    div {
      /* 给个高度 */
      height: ;

      /* 白色背景 */
      background: white;
    }
  </style>
</head>
<body>
  <div></div>
  <div></div>
</body>
</html>

运行结果:

可以看到这个列间距只会针对于列与列之距离,所以这两列和屏幕之距离为 0,那么该如何进行改进呢:

<!DOCTYPE html>
<html lang="en">
<head>
  < charset="UTF-8">
  < name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 清除认样式 */
    * { padding: ; margin: ; }

    /* 令html和body全屏, 并有灰色背景 */
    html, body { height: ; background: gray; }

    /* 找到直接父元素 */
    body {
      /* 为网格布局 */
      display: grid;

      /* 设置垂直方向为五列 */
      grid-template-columns: repeat(, px fr) px;
    }

    div {
      /* 给个高度 */
      height: ;

      /* 白色背景 */
      background: white;
    }

    /* 设置左侧列的位置 */
    .left { grid-area:  /  /  / ; }

    /* 设置右侧列的位置 */
    .right { grid-area:  /  /  / ; }
  </style>
</head>
<body>
  <div class="left"></div>
  <div class="right"></div>
</body>
</html>

运行结果:

其实原理也很简单,我们把间距也设置成一列,这样的话算上间距一共就五列了:

然后将左侧列设置为父元素的第二列,右侧列设置为父元素的第四列即可。


联系我
置顶