CSS之grid布局

一、前言

相信大家在学完flex弹性布局后,都觉得布局很轻松了,浮动布局也用的没那么多了(几乎不会用到)。但是,直到工作时遇到了flex不太好弄的布局时,例如二维布局且盒子区域不定,有的盒子水平占据两格,有的盒子竖直占据三格等。于是,我开始学习grid布局。

二、容器属性

2.1 设置grid布局

display:grid;

2.2 设置行高、列宽

/*  声明了两行,行高分别为 50px 50px,列宽分别为200px 100px 200px  */
grid-template-columns: 200px 100px 200px;
grid-template-rows: 50px 50px;

/*  声明了两行,行高分别为 50px 50px  */
grid-template-rows: repeat(2, 50px);

/*  等比例设置,将每一行都分成同等份  */
grid-template-rows:1fr 1fr 1fr;
grid-template-rows:repeat(3, 1fr);	

/*  自动填充  */
grid-template-rows:repeat(auto-fill, 100px);

/*  不确定单元格大小  */
grid-template-rows:repeat(2, minmax(50px,100px));

2.3 设置单元格之间的间距

/*  行间距  */ 
row-gap:20px;
/*  列间距  */
column-gap:20px;

/*  简写    */
gap: 20px 20px;

2.4 设置布局区域

/*  将两行三列的区域命名,子元素可以通过grid-area属性占据对应的位置 */
grid-template-areas:
	"header header"
	"nav main"
	"footer footer";
}

2.5 设置流动处理机制

grid-auto-flow: row dense;

解释:设置容器优先摆放水平方向。未设置前,如图1所示。设置后,如图2所示。
图1
图2

2.6 整体对齐方式

justify-content:center | start | end | space-evenly | space-around | space-between;
align-content:center | start | end | space-evenly | space-around | space-between;

/*  简写  */
place-content: justify-content值 align-content值;

三、项目属性

3.1 根据栅格线编号放置元素

/*  放在第二行第一列的位置  */
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 2;
grid-row-end: 3;

3.2 根据偏移量定位元素

/*  在三行三列网格中显示在中间  */
grid-column-start: 2;
grid-row-start: 2;
grid-column-end: span 1;
grid-row-end: span 1;

/*  元素定位简写  */
grid-row: 1 / 4;   = grid-row: 1 / span 3;
grid-column:1 / 2; = grid-column: 1 / span 1;

3.3 区域定位

/*  grid-area:行开始 列开始 行结束 列结束;  */
grid-area: 2/2/3/3;

/*  占据区域名为footer的位置  */
grid-area: footer;

3.4 所有元素对齐方式

justify-items:center | start | end | space-evenly | space-around | space-between;
align-items:center | start | end | space-evenly | space-around | space-between;

/*  简写  */
place-items: justify-items值 align-items值;

3.5 单个元素对齐方式

justify-self:center | start | end | space-evenly | space-around | space-between;
align-self:center | start | end | space-evenly | space-around | space-between;

/*  简写  */
place-self: justify-self值 align-self值;

四、demo

效果:
demo

实现思路:将容器分为三行两列,并将这些区域命名,然后元素通过grid-area属 性占据对应的位置。

<div class="container">
  <header>header</header>
  <nav>nav</nav>
  <main>main</main>
  <footer>footer</footer>
</div>
.container {
  width: 500px;
  height: 200px;
  display: grid;
  grid-template-columns: 40px 1fr;
  grid-template-rows: 30px 1fr 30px;
  grid-template-areas:
    "header header"
    "nav main"
    "footer footer";
}
header{
  background-color: red;
  grid-area: header;
}
nav{
  background-color: gray;
  grid-area: nav;
}
main{
  background-color: green;
  grid-area: main;
}
footer{
  background-color: blue;
  grid-area: footer;
}

五、个人使用总结

Grid布局是一种二维布局方式,在布局上有一定的便利,能够将整体容器进行二维布局。不过容器里的项目可以使用flex布局去进行处理(看UI原型图而定),总之grid处理整体,flex处理细节,二者兼用,效率翻倍。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS Grid布局是一种用于网页布局的强大的CSS模块。它提供了一种二维网格系统,可以将页面划分为行和列,并通过在网格单元中放置元素来创建复杂的布局。 使用CSS Grid布局,你可以轻松地定义网格容器和网格项。网格容器是包含网格项的父元素,而网格项则是直接放置在网格容器内的子元素。 以下是CSS Grid布局的一些重要概念和特性: 1. 网格容器(Grid Container):通过设置`display: grid`来创建一个网格容器。它是网格布局的父元素。 2. 网格项(Grid Item):直接放置在网格容器内的子元素。可以使用`grid-column`和`grid-row`属性来指定网格项在网格中的位置。 3. 网格线(Grid Line):网格中的水平线和垂直线。可以通过指定行号和列号来引用网格线。 4. 网格轨道(Grid Track):两个相邻网格线之间的空间,可以是行轨道(row track)或列轨道(column track)。 5. 网格单元(Grid Cell):由四个相邻的网格线围成的矩形区域。 6. 网格区域(Grid Area):由多个网格单元组成的矩形区域。 使用CSS Grid布局,你可以通过以下方式来创建网格布局: 1. 定义网格模板(Grid Template):通过设置`grid-template-rows`和`grid-template-columns`属性来定义网格的行和列。 2. 放置网格项:使用`grid-column`和`grid-row`属性来指定网格项在网格中的位置。 3. 调整网格布局:可以使用其他属性如`grid-gap`、`grid-auto-rows`、`grid-auto-columns`等来调整网格布局CSS Grid布局提供了灵活且强大的布局能力,可以轻松实现复杂的网页布局。它比传统的基于浮动和定位的布局方法更直观和易于理解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值