快速上手CSS布局(1)——Grid布局

Grid 布局

Grid 布局是一种新型CSS布局方式,特点为二维布局,他比较擅长将一个页面划分为几个主要区域,能够轻松实现下列布局方式。

Grid 和 Flex 布局的区别

  • Flex: 属于一维布局,适合做局部布局,比如标头组件、导航组件。
  • Grid: 属于二维布局,适合做页面整体规划。

Grid 布局 基本属性

3.1 grid-template-columns 列数+列宽

通过指定每列的宽度,指定一共有几列。

  • fr (fraction) 指定的列数平分父元素宽度。
  • auto-fill 如果有剩余空间的话,auto-fill 会创建额外的空列,如果这个空列宽度达到一个盒子定义的宽度,下一行的第一个就会补上来——主要用于自适应屏幕尺寸。
  • minmax设置最小最大值,minmax(120px, 1fr)最小值为120px 最大值是每列宽度都一样且整理占满整个father盒子。
.father {
    // 1.1 设置为grid布局
    display:grid;
    // 1.2 指定两列 每列的宽度为220px
    grid-template-columns:220px 220px;
    // 1.3 上式等价于
    grid-template-columns: repeat(2, 220px);
    // 1.4 fr 指定两列,整体占满father盒子
    grid-template-columns: 1fr 1fr;
    grid-template-columns: repeat(2, 1fr);
    // 1.5 不设置固定列,但整体占满盒子,列数随着屏幕的缩放自适应大小(商品列表)
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}

3.2 grid-template-rows 行数+行高

通过指定每行的高度,指定一共有几行。

.father {
    // 2.1 设置为grid布局
    display:grid;
    // 2.2 设置第一行的高度为50px 第二行为100px
    grid-template-rows: 50px 100px;
}

3.3 grid-auto-rows 默认行(常用)行高

默认行 : 没有被 grid-template-rows 指定高度的行。

  • auto 物体本身的高度。
.father {
    // 3.1 设置为grid布局
    display:grid;
    // 3.2 设置默认行的高度都为物体本身的高度
     grid-auto-rows:auto;
     // 3.2 设置默认行的高度都为100px
     grid-auto-rows:100px;
}

3.4 grid-row-gap 行间距 和 ## grid-column-gap 列间距

grid-row-gap 行间距

## grid-column-gap 列间距

注意: 必须保证设置了行宽(列间距同理)## grid-auto-rows、grid-template-rows,不然行间距设置无效!!!

.father {
    // 4.1 设置为grid布局
    display:grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    grid-auto-rows:100px;
    // 4.2 设置每行间距都为10px
    grid-row-gap: 10px;
    // 4.4 设置每列间距都为10px
    grid-column-gap: 10px;
}

3.5 gap 间距简写

.father {
    // 4.1 设置为grid布局
    display:grid;
     grid-template-columns:220px 220px; // 列宽+列数
     grid-auto-rows:100px; // 行高
     // 4.2 设置行间距20 列间距30
     gap: 20px, 30px;
}

Grid 布局 区域属性

area 区域属性

grid-template-areas: 在父元素中使用,该属性用于定义区域,参数类似于矩阵,每一个元素代表一个空位。

grid-area: 在子元素中使用,该属性为指定项目放在哪一个区域。

.father {
    display:grid;
    // 4.1 设置两列,第一列列宽为1fr,第二列为3fr
    grid-template-columns: 1fr 3fr;
    grid-template-areas:
        // 4.2 第一行 位置1为header,位置2为占位符.
        "header ."
        "aside article"
        "footer footer"
        
  // 子元素
  header {
  // 4.3 设置子元素要放在header区域
    grid-area: header;
  }

  article {
    grid-area: article;
  }

  aside {
    grid-area: aside;
  }

  footer {
    grid-area: footer;

  }
}

line 线性位置属性

均在子元素中设置。
注意:a 开始到 b 结束,中间要用 / 来连接。

image.png

.father {
    display:grid;
    grid-template-columns: 1fr 3fr;
   
  // 子元素
  header {
    /* 表示 竖线是从1开始 3结束 */
    grid-column: 1/ 3;
    /* 表示 横线是从1开始 3结束 */
    grid-row: 1/2;
  }

  article {
    grid-column: 2/ 3;
    grid-row: 2/ 3;
  }

  aside {
    grid-column: 1/2;
    grid-row: 2/3;
  }

  footer {
    grid-column: 1/3;
    grid-row: 3/4;
  }

Grid 布局 对齐属性

垂直居中对齐:父元素- align-items: center;/end靠下对齐
水平居中对齐:justify-item:space-between

子元素全部相对于父元素
垂直居中对齐:align-content:center
水平居中对齐:justify-content:space-between

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值