美文网首页
Grid Layout

Grid Layout

作者: Water水先生 | 来源:发表于2019-03-18 10:14 被阅读0次

这篇笔记整合了一些其他的学习笔记内容,主要用于快速复习Grid布局。


display: grid
grid-template-columns & grid-template-rows
grid-column-start + grid-column-end
justify-self | align-self | place-self -- align-self justify-self
grid-column-gap | grid-row-gap | grid-gap -- grid-column-gap grid-row-gap
justify-items | align-items | place-items -- align-items justify-items
justify-content | align-content

表格布局由两层组成,父层grid和子层item

  <div class="grid">
    <div class="item"></div>
    <div class="item"></div>
  </div>
  .grid {
    display: grid;
    //一个内联网格
    display: inline-grid;
  }

定义行列

定义列grid-template-columns
定义行grid-template-rows
定义一个三列两行的表格 ≡≡≡ 长这样……

  .grid {
    display: grid;
    // 第一列到第三列的宽度,比如 100px 50px 100px
    grid-template-columns: c1 c2 c3; 
    //第一行第二行的高度
    grid-template-rows: r1 r2;  
  }

当item不够columns x rows的数量时,只显示columns x rows的数量,当增加了数量时才会别填满。

除了数值,还可以用百分比、网格可用空间fr来表示,同时还可以设置line-name。

  .grid {
    grid-template-columns: 25% 100px auto;
    //定义一条网格线,可以有多个名称
    grid-template-rows: [row1-start] 20% [row2-end row2-start] 25% [row2-end];
    //还可以用repeat方法来设置线
    grid-template-columns: repeat(3, 20px [col-start])
    //等价于
    grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start];
    //fr是剩余可用空间
    grid-template-columns: 1fr 1fr 1fr;
    //减去非fr后计算得剩余空间,下面是减掉50后三等分
    grid-template-columns: 1fr 50px 1fr 1fr;
  }

定位子元素的大小使用

定义列开始grid-column-start
定义列结束grid-column-end

  //这个是按照数线的方式来定义的
  //比如一个两行两列的表格田
  //最左边是一条线,中间一条,右边一条
  //总共就是三条线
  //所以当start:1,end:3的时候这个item就占了两列的高度。
  //口≡
  .item {
    grid-column-start: 1;
    grid-column-end: 3;
  }

  //一个简易的定义方式
  .item {
    grid-column: 1 / 3;
  }

  //引用父级定义的名称
  .item {
    grid-column-start: col-start 2;
  }

定义item的对齐

沿着行justify-self,沿着列align-self

  .item {
    justify-self: start | end | center | stretch;
    align-self: start | end | center | stretch;
    // 简写
    place-self: align-self justify-self
  }

定义网格线之间的距离

使用grid-column-gap / grid-row-gap定义行列间的距离,如果grid-row-gap没有定义,会被设置为等同于grid-column-gap

  .grid {
    grid-column-gap: 10px;
    grid-row-gap: 15px;
    //简写
    grid-gap: 10px 15px;
  }

定义网格行对齐 justify-items

这个东西是沿着行inline的对齐

  .grid {
    justify-items: start | end | center | stretch(填满单元格宽度,默认)
  }

定义网格列对齐 align-items

沿着列block对齐

  align-items: start | end | center | stretch;

一个简写

place-item是上述两个的简写

  .grid {
    place-items: <align-items> <justify-items> | 行 列
  }

网格合计大小小于网格容器大小,设置网格容器内网格的对齐方式 听起来。。。不容易理解

用justify-content来定义

  • start 左对齐
  • end 右对齐
  • center 水平居中对齐
  • stretch 调整网格item宽度,允许充满整个容器宽度
  • space-around 每个item间放一个均匀的容器,左右两端放置一般
  • space-between 每个item放一个均匀容器,左右不放
  • space-evenly 全部都放均匀的容器,包括左右
  .grid {
    justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
  }

有了左右,辣当然有上下了

用align-content定义,这个和上面的一样,就是把左换成顶,右换成底,左右变成上下

  .grid {
    align-content: start | end | center | stretch | space-around | space-between | space-evenly;
  }

当然也有简写了。。。

  .grid {
    place-content: <align-content> <justify-content> | 左右 上下
  }

使用grid-template-areas定义模板 P.s.这个东西看起来很复杂= =我觉得用前面的东西就OK了

通过引用grid-area指定的网格区域定义模板,(.)表示一个空单元格,语法视作可视化网格结构。
子类grid-area指定名称,父层grid-area-name指定grid-area网格区域名称,none不定义网格区域。

  .item-a {
    grid-area: header;
  }
  .item-b {
    grid-area: main;
  }
  .item-c {
    grid-area: sidebar;
  }
  .item-d {
    grid-area: footer;
  }

  .grid {
    grid-template-columns: 50px 50px 50px 50px;
    grid-template-rows: auto;
    //look here,可视化
    grid-template-areas:
      "header header header header"
      "main main  . sidebar"
      "footer footer footer footer"
  }

自动放置算法 grid-auto-flow

Mmmm真的常用吗,其中dense是告诉算法出现较小网格时,填充较早的空缺。。。不过可能会混乱。

  .grid {
    grid-auto-flow: row | column | row dense | column dense
  }

统一简写 高大上

grid: grid-template-rows, grid-template-columns, grid-teplate-areas, grid-auto-rows, grid-auto-columns, grid-auto-flow;
哎哟,反正就按照下面的代码块来弄

  .grid {
    grid: 100px 300px / 3fr 1fr;
    //等同于
    grid-template'-rows: 100px 300px;
    grid-template-columns: 3fr 1fr;

    grid: auto-flow / 200px 1fr;
    //等同于
    grid-auto-flow:row;
    grid-template-columns: 200px 1fr;
  }
  ...我真的写不下去了...

网格动画

有5个可应用动画的网格属性 grid-gap, grid-row-gap, grid-column-gap
grid-template-columns, grid-template-rows
可以用长度、百分比、calc

相关文章

  • React丨布局拖拽组件

    react-grid-layout npmcnpm i react-grid-layout Githubhttps...

  • Grid Layout

    这篇笔记整合了一些其他的学习笔记内容,主要用于快速复习Grid布局。 display: gridgrid-temp...

  • Unity 3D Tips

    使用Horizontal Layout Group、Vertical Layout Group 和 Grid La...

  • vue 拖拽 地址

    https://github.com/jbaysolutions/vue-grid-layout

  • css grid layout

    2017,新年伊始,做点新的事情,那先从简单的开始吧,瞄准了css grid layout; 目前WEB布局的方式...

  • 前端资源汇总

    Layout 1.网格布局方案vue-grid-layout:https://github.com/jbaysol...

  • Sketch

    为响应式网页使用Grid SystemCanvas -> Layout Settings -> Coloums /...

  • CSS Grid Layout 5 Practical Proj

    下载地址:CSS Grid Layout 5 Practical Projects[www.rejoiceblog...

  • 翻译 | CSS网格(CSS Grid)布局入门

    原文地址:Getting to know CSS Grid Layout 原文作者:Chris Wright 译者...

  • Android GridLayout

    原文:Android Grid Layout 译文的GitHub地址:Android GridLayout 译者注...

网友评论

      本文标题:Grid Layout

      本文链接:https://www.haomeiwen.com/subject/jsammqtx.html