grid初识

grid布局是一个二维的基于网格的布局系统,这是个非常强大的css模块,然而有个令人伤心的话题就是兼容性问题,一个兼容性否定了他的推广,然而,这并不影响我们的学习,因为,只是时间问题。
兼容性可以看这个网站
can i use

image.png

话不多说,开始学习吧
先创建一个html文件

<div class="container">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>

然后开始我们最基础的两个性质

grid-template-columns
     .container {
        display: grid;
        height: 100px;
        grid-template-columns: 20px auto 20px;
        border: 1px solid;
    }
    .item {
        border: 1px solid;
    }
    .is-one {
        background: rebeccapurple;
    }
image.png

从最基本的我们可以看出,其实这个grid跟flexbox挺像的,是在父元素设置子元素的排列方式,然后子元素就会有统一的布局,如果子元素再有一些不一样的布局,也可以自己改。
另外,有没有瞬间又觉得很方便了,做两栏布局三栏布局甚至四栏五栏六栏都是so easy 的事情了呀。什么自适应都是so easy啦

grid-template-rows

就把上面的grid-template-columns属性换个属性名。


image.png

grid-template-areas

  • 通过引用 grid-area属性指定的网格区域的名称来定义网格模板。

  • 重复网格区域的名称导致内容扩展到这些单元格。

  • 点号表示一个空单元格。 语法本身提供了网格结构的可视化

    <style>
      .container {
          display: grid;
          height: 200px;
          grid-template-columns: 50px auto 50px;
          grid-template-rows: 10% auto 10%;
          grid-template-areas: 
          "header header header"
          "content content sidebar"
          "footer footer footer";
          border: 1px solid;
      }
      .item {
          border: 1px solid;
      }
      .is-header {
          grid-area: header;
          background: #CAA5EE;
      }
      .is-content {
          grid-area: content;
          background: #a395ba;
      }
      .is-sidebar {
          grid-area: sidebar;
          background: yellow;
      }
      .is-footer {
          grid-area: footer;
          background: #CAA5EE;
      }
      </style>
      <div class="container">
          <div class="item is-header"></div>
          <div class="item is-content"></div>
          <div class="item is-sidebar"></div>
          <div class="item is-footer"></div>
      </div>
    

image.png

不详解撒,给图
image.png

如果想留一个网格的空白,可以有一个.占位。
在图中就是把其中一个header变成.就可以了

grid-column-gap / grid-row-gap

行或者列的空隙
先来效果图!


image.png

在上一个例子的基础上,增加这两条嘻嘻。


image.png

上面讲的都是网格怎么怎么排列的,接下来我们要讲网格内容物的排列方式啦

justify-items

image.png

看看这个,当内容物宽度小于网格宽度时候,内容物就会往左边跑,这是文档流默认特性,这个时候我们可以通过设置justify-items属性啦。

  • start: 内容与网格区域的左端对齐
  • end: 内容与网格区域的右端对齐
  • center: 内容位于网格区域的中间位置
  • stretch: 内容宽度占据整个网格区域空间(这是默认值)
    看到最后这一个是不是跟我说的好像不一样!这是因为我们的前提不一样。

align-items

既然有水平方向,怎么可以没有垂直方向呢!


image.png

看这样,是不是就跑上去了!这里我只设置item的高度,没有设置宽度,所以宽度是stretch啦,跟上面说的占据这个网格空间是一致的。

  • start: 内容与网格区域的顶端对齐
  • end: 内容与网格区域的底部对齐
  • center: 内容位于网格区域的垂直中心位置
  • stretch: 内容高度占据整个网格区域空间(这是默认值)

好的,今天就讲到这里拉,这是最基础的部分,接下来还有稍微复杂一些的操作就等到下次再说吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载地址:https://www.cnblogs.com/xiaohuochai/p/7083153.html 前...
    One_Hund阅读 5,211评论 0 1
  • 简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,旨在改变我们基于网格设计的用户界面方式...
    咕咚咚bells阅读 7,342评论 0 4
  • Grid 是CSS中最强大的布局系统。它是2-Dimensional System,这意味着它可以同时处理列和行....
    邢烽朔阅读 7,395评论 0 5
  • 简介CSS网格布局(又称“网格”),是一种二维网格布局系统。CSS在处理网页布局方面一直做的不是很好。一开始我们用...
    _leonlee阅读 65,396评论 25 173
  • 测试
    喃宝儿阅读 1,469评论 0 0