Grid网格布局一种更灵活、更强大的二维布局模型!

yumo6666个月前 (08-02)技术文章84

当涉及到网页布局时,display: flex; 和 display: grid; 是两个常用的 CSS 属性,它们都允许创建不同类型的布局,但有着不同的用法和适用场景。

使用flex布局的痛点

当我们使用justify-content: space-between;让子元素两端对齐,自动分配中间间距,假设一行有5个,如果每一行都是相同的5个是没有问题的,但如果最后一行只有4个的情况就会出现如下图的问题:

/* flex布局 */
display: flex;
flex-wrap: wrap;
/* 元素两端对齐 */
justify-content: space-between;

这个时候如何让最后一行和前两行效果一致,实现起来是比较麻烦的。但是如果换成grid布局,这个效果是很好实现的。

相同的布局将flex改成grid

<div class="container">
 	<div class="item-box">box</div>
	......
 </div>
<style>
    .container{
      	display: grid;
        grid-template-columns: repeat(5, 1fr);
        gap: 20px;
    }
</style>

代码解释:

  • display: grid; 设置grid布局
  • grid-template-columns: repeat(5, 1fr); 每一行5列,每列都是1fr
  • gap: 20px; 四周的间距是20px

布局效果如下图:

上面的grip布局,最后一行不是5个,但是可以左对齐,不会像flex布局一样的bug。

进阶使用grid布局做响应式

注意:使用响应式布局,父容器不能使用固定单位,而是使用百分比单位布局

<div class="container">
 	<div class="item-box">box</div>
	......
 </div>
<style>
    .container{
      	width: 100%;
      	display: grid;
        grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
        gap: 20px;
    }
</style>


grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));核心代码解释,每一行列数自动填充auto-fill,每一列最小宽度minmax(300px, 1fr)255px,最大宽度1fr。

效果如下图:

使用grid-row和grid-column实现B站布局效果

<div class="container">
 	<div class="item-box item-box-1">box</div>
	......
 </div>
<style>
    .container .item-box-1 {
        height: auto;
        grid-row: 1/3;
        grid-column: 1/3;
      }
</style>

grid-rowgrid-column 是 CSS Grid Layout 中的属性,用于定义网格元素的位置和大小。这两个属性可以用于同时定义行和列,例如 grid-row: 1/3; grid-column: 2/5; 表示元素从第一行线到第三行线,从第二列线到第五列线。

最重要的是,display: flex; display: grid; 都提供了灵活性和响应性,可以帮助你创建各种各样的布局,以满足你的设计需求。根据你的具体项目和设计目标来选择正确的工具,以获得最佳的布局结果。

相关文章

图解 CSS Grid 布局(css的grid布局)

大家好,我是 Echa。Grid(网格)布局是最强大的 CSS 布局方案,用于构建二维布局。Grid 布局将页面划分成一个个网格,可以任意组合不同的网格,实现各种各样的布局。下面就来看看 CSS Gr...

从零开始的Grid布局掌握(grid布局和flex布局发展趋势)

前言在上一篇文章中,我们了解了Flex布局系统的强大功能和灵活性,其能够帮我们轻松地控制和对齐页面中的元素然而,在实际的网页设计中,我们经常会遇到更加复杂的布局需求,例如创建多列、多行的网格结构,为了...

CSS布局模式之Flex布局&amp;Grid布局

1. 简介1.1 什么是CSS布局?CSS布局(Cascading Style Sheets layout)指的是通过使用CSS样式来控制网页中元素的布局方式。在网页设计中,布局是非常重要的一个方面,...

CSS网格布局:现代网页设计的终极解决方案

在网页设计领域,多行多列布局一直是开发者面临的挑战之一。随着CSS Grid(网格布局)的出现,我们终于拥有了一种强大而灵活的布局解决方案。本文将深入探讨CSS网格布局的核心概念和实用技巧,帮助你掌握...

如何使用CSS Grid 居中 div(css中grid用法总结)

本文翻译自 How to Center a Div Using CSS Grid,作者:Fimber Elemuwa, Ralph Mason。 略有删改在本文中,我们将介绍使用CSS Grid在水平...

CSS grid-template-columns属性探讨|给你代码

CSSgrid布局CSS grid布局是一种很强大的布局,兼容性如上表所示,表现在控制台里,你可以清楚看到他的内部每一个块都由一个虚线方块组成。他的每行每列都会生产一个单元格,而划分他们之间的线称为网...