zoukankan      html  css  js  c++  java
  • grid-layout 网格布局--快速上手

    grid布局非常强大,他是二维布局模式,将容器划分成“行”和“列”,产生单元格,然后指定项目所在单元格,,而flex是一维布局,grid远比flex强大的多。

    这里我只讲日常工作中常用的属性。

    1、容器上的属性

    (1)display属性

    display:grid  用来指定容器为网格布局。这跟我们以前写 display:block; display:flex;都是一个意思,就是告诉浏览器我当前的这个盒子使用的布局方式,这样浏览器才能识别你接下俩设置的属性。

    div {
      display: grid;
    }
    
    // 指定一个元素是行内块网格布局
    div {
      display: inline-grid;
    }

    这里需要注意的是:设为网格布局以后,容器子元素的float、display:inline-block、display:table-cell、vertical-align和column-*等设置都将失效。

    (2)grid-template-columns属性和grid-template-rows属性

    容器指定了网格布局之后,接着就可以划分行和列了,grid-template-columns用来指定每一列的宽度,grid-template-rows用来指定每一行的高度。

    .container {
      display: grid;
      grid-template-columns: 100px 100px 100px;
      grid-template-rows: 100px 100px 100px;
    }
    
    .container {
      display: grid;
      grid-template-columns: 33.33% 33.33% 33.33%;
      grid-template-rows: 33.33% 33.33% 33.33%;
    }
    
    .container {
      display: grid;
      grid-template-columns: repeat(3, 33.33%);
      grid-template-rows: repeat(3, 33.33%);
    }

    上面三种写法都是指定了一个三行三列的网格,第一种是固定宽高,第二第三种是宽高都占总的三分之一。

    在设置这两个属性时,我们时常会用到一些关键字:repeat、fr、minmax

    repeat:repeat()接受两个参数,第一个参数是重复的次数(上例是3),第二个参数是所要重复的值。

    grid-template-columns: repeat(2, 100px 20px 80px);

    fr:为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段")。如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍

    .container {
      display: grid;
      grid-template-columns: 1fr 1fr;
    }

    fr可以与绝对长度的单位结合使用,这时会非常方便。

    .container {
      display: grid;
      grid-template-columns: 150px 1fr 2fr;
    }

    上面代码表示,第一列的宽度为150像素,第二列的宽度是第三列的一半。

    minmax():

    grid-template-columns: 1fr 1fr minmax(100px, 1fr);

    上面代码中,minmax(100px, 1fr)表示列宽不小于100px,不大于1fr。

    (3)grid-auto-flow 属性

    这个顺序由grid-auto-flow属性决定,默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"。

    (4)justify-items 属性,align-items 属性,place-items 属性

    justify-items属性设置单元格内容的水平位置(左中右),align-items属性设置单元格内容的垂直位置(上中下)。

    .container {
      justify-items: start | end | center | stretch;
      align-items: start | end | center | stretch;
    }
    • - start:对齐单元格的起始边缘。
    • - end:对齐单元格的结束边缘。
    • - center:单元格内部居中。
    • - stretch:拉伸,占满单元格的整个宽度(默认值)

    place-items属性是align-items属性和justify-items属性的合并简写形式。

    place-items: <align-items> <justify-items>;

    2、容器的属性

    (1)justify-self 属性,align-self 属性,place-self 属性

    justify-self属性设置单元格内容的水平位置(左中右),跟justify-items属性的用法完全一致,但只作用于单个项目。

    align-self属性设置单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,也是只作用于单个项目。

    3、布局实例

    (1)用grid实现两栏布局

    // html部分
      <div class="container">
        <div class="left"></div>
        <div class="main"></div>
      </div>

    // css部分
    .container{ display: grid; grid
    -template-columns: 200px 1fr; }

    这样,我们只需一行代码就搞定了两栏布局。

    (2)实现水平垂直居中

    // html部分
    <div class="container">
          <div class="item"></div>
    </div>
    
    // css部分
    .container{
      display: grid;
      justify-items: center;
      align-items: center;
    }

    (3)实现十二网格布局

    grid-template-columns: repeat(12, 1fr);
  • 相关阅读:
    C 实战练习题目45
    C 实战练习题目44
    C 实战练习题目43
    C 实战练习题目42 -auto定义变量
    C 实战练习题目41 -static定义静态变量
    如何0基础学习C/C++?
    2019-11-29-win10-uwp-关联文件
    2019-11-29-win10-UWP-Controls-by-function
    2019-11-29-WPF-高性能笔
    2019-11-29-WPF-使用-Win2d-渲染
  • 原文地址:https://www.cnblogs.com/00feixi/p/11379007.html
Copyright © 2011-2022 走看看