likes
comments
collection
share

使用grid布局解决flex的痛点,以及如何搭建响应式布局

作者站长头像
站长
· 阅读数 4

问题

在页面切分时,我们经常使用flex布局。当需要对页面中的多个元素进行布局时,使用flex布局可以帮助我们快速创建整齐的界面。然而,flex布局也存在一些难以解决的布局问题。

特别是当我们使用v-for循环将后端数据展示在页面上时,如果最后一行的元素较少,并且我们使用 justify-content: space-between; 属性值来处理空白区域的分布,最后一行可能会出现间隔过大的情况。

使用grid布局解决flex的痛点,以及如何搭建响应式布局
display: flex;
flex-wrap: wrap;
justify-content: space-between;
使用grid布局解决flex的痛点,以及如何搭建响应式布局

可以通过调整对齐方向或增加间距来解决这个问题,但这样就无法像之前一样轻松处理居中和间距。

因此,我们引入了grid布局,它能够简单地解决这个问题。

使用grid布局解决flex的痛点,以及如何搭建响应式布局

grid 布局

display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 30px;
  • display: grid;: 改变展示方式为grid。
  • grid-template-columns: 1fr 1fr 1fr;: 指定展示元素的列数为3列,其中1fr是一个自适应单位。
  • gap: 30px;: 指定元素之间的间距为30px。

通过这样的设置,我们可以轻松解决使用flex布局带来的问题。

使用grid布局解决flex的痛点,以及如何搭建响应式布局

grid-template-columns

我们可以通过修改grid-template-columns属性的值来更好地理解这个属性。

  • grid-template-columns: 1fr;
使用grid布局解决flex的痛点,以及如何搭建响应式布局
  • grid-template-columns: 1fr 1fr;
使用grid布局解决flex的痛点,以及如何搭建响应式布局
  • grid-template-columns: 1fr 300px 1fr;
使用grid布局解决flex的痛点,以及如何搭建响应式布局

grid-template-columns: repeat()

grid-template-columns: repeat() 是CSS Grid布局中的一个属性值,用于定义网格容器中水平方向(列)的网格轨道(track)结构。具体语法如下:

grid-template-columns: repeat(number, size1, size2, ...);
  • number: 表示每行中重复的次数。例如,如果要创建一行3次循环排布,则填入数字 3。
  • [size]...: 可以是具体的长度值(如像素、百分比、fr 等)、auto 或者是一个 Track-Breadth(网格轨道大小)。这个参数可以有多个,每个值对应一个循环中一列的大小。如果为一个值,则该循环所有列将使用相同的默认大小。

grid-template-columns: repeat(3, 1fr);

使用grid布局解决flex的痛点,以及如何搭建响应式布局

grid-template-columns: repeat(3, 1fr 200px);

使用grid布局解决flex的痛点,以及如何搭建响应式布局

grid-template-columns: repeat(3); 省略了长度时:

使用grid布局解决flex的痛点,以及如何搭建响应式布局

类似于表格中合并单元格的布局

使用grid布局解决flex的痛点,以及如何搭建响应式布局
grid-column: 1/2;
grid-row: 2/5;
  • grid-row: 从第几行开始 / 第几行+占几个。
  • grid-column: 从第几列开始 / 第几列+占几个。
使用grid布局解决flex的痛点,以及如何搭建响应式布局

响应式布局

grid-template-columns: repeat(auto-fill, minmax(200px, 1fr))

正常页面:

使用grid布局解决flex的痛点,以及如何搭建响应式布局

缩小页面后:

使用grid布局解决flex的痛点,以及如何搭建响应式布局

minmax(min, max) 是CSS Grid布局中的一个函数,用于指定一个轨道(grid track)的大小范围。这个函数接受两个参数,一个是最小值(min),一个是最大值(max)。

  • min 表示轨道的最小大小,可以是一个固定的长度值(如像素 px),也可以是一个相对值(如百分比 % 或视窗单位 vw)。
  • max 表示轨道的最大大小,同样可以是一个固定的长度值或相对值。

这个函数的作用是告诉布局系统,在满足最小和最大值的范围内,尽可能地占据空间。如果有更多的空间可用,轨道将会增大,但不会超过最大值。如果空间不足,轨道将会缩小,但不会小于最小值。

本人还在学习中,水平有限,本文可能存在纰漏或错误,如有问题欢迎指正,感谢你阅读这篇文章,如果你觉得写得还行的话,不要忘记点赞、评论、收藏哦!祝生活愉快!😘

使用grid布局解决flex的痛点,以及如何搭建响应式布局

转载自:https://juejin.cn/post/7331070744597676082
评论
请登录