CSS Grid 布局:如何使用 grid-template-columns 属性设置列宽比例

在现代 web 开发中,CSS Grid 布局已经变得越来越普遍。CSS Grid 布局是一种强大的、具有灵活性的布局方式,它允许我们在网页中以更自由、更灵活的方式布置元素。

网格布局是将一个区域划分成网格的一种布局方式。这个区域被分为一个或多个行和列,并且可以容易地访问和管理网格内的元素。

在本文中,我们将重点介绍如何使用 CSS Grid 布局中的 grid-template-columns 属性来设置列宽比例和实现具有灵活性的网格布局。

grid-template-columns 属性

grid-template-columns 属性定义一个网格容器中所有列的宽度。其接受一个值字符串,该字符串由列宽组成,以空格分隔。

以下是一个 grid-template-columns 属性的基本示例:

---------- -
  -------- -----
  
  -- -- - -------- ----- --
  ---------------------- ----- ----- ------
-

这个属性的值可以是固定的像素值、百分比、em、rem 等单位。同样,我们可以在值中使用 fr 单位。fr 表示可用空间中的一小部分,定义了相对于其他项目的宽度。

以下是一个 grid-template-columns 属性具有多个固定和相对宽度的示例:

---------- -
  -------- -----
  
  -- -- - -------- ----------------- --- --
  ---------------------- ----- --- ----
-

使用 grid-template-columns 属性,我们可以非常灵活地定义网格的列宽比例。但是,为了更好地理解列宽比例的实用性,我们需要进一步探讨 grid-template-columns 属性。

repeat() 函数

如果需要在网格布局中定义多个相同宽度的列,您不必为每一列显式地指定属性。这种情况下,我们可以使用 repeat() 函数来缩短语法。

以下是一个 repeat() 函数的示例:

---------- -
  -------- -----

  -- -- - ------- ----- --
  ---------------------- --------- -------
-

repeat() 函数中,第一个参数表示要重复的项目的数量,而第二个参数表示每个重复项目的宽度。

自动生成列

如果不知道有多少列,或者需要动态添加列,您可以使用 auto-fillauto-fit 关键字。这样做的优点是,网格将尽可能多地容纳项目。

auto-fit 关键字创建了一个自动布局,可以自动预留足够的空间来填补所有网格单元。而 auto-fill 关键字将尽可能多地容纳项目,但不会自动添加项目。

下面是 auto-fitauto-fill 的示例:

---------- -
  -------- -----

  -- --------------- --
  ---------------------- ---------------- ------------- ------
  
  -- --------------- --------------- --
  ---------------------- ----------------- -------
-

minmax() 函数

minmax() 函数接受两个参数,分别是最小值和最大值,它可以在定义列宽度时提供更多的灵活性。

默认情况下,grid-template-columns 宽度是根据内容自动调整的,可以使用 minmax() 函数设置最小值和最大值。这样做的好处是,元素将能够保持其最小大小,而不会因内容太多而延伸到不必要的宽度。

---------- -
  -------- -----

  -- ----------- ---------- --- --
  ---------------------- ---------------- ------------- ------
-

实例

现在,我们来看一下 grid-template-columns 属性如何帮助我们实现网格布局的灵活性和可读性。以下是一个列宽度比例为 4:8:4 的网格示例:

---------- -
  -------- -----
  
  -- -- - ------------- ----------------- --- --
  ---------------------- ----- --- ------
-

接下来,我们将使用 auto-fit 关键字,以便在容器中填充尽可能多的项目。

---------- -
  -------- -----

  -- --------------------------- ----------------- --- --
  ---------------------- ---------------- ------------- -----
          ----- ------------ ---- ----- ---------------- ------------- ------
-

以上代码将在列宽比例为 4:8:4 的情况下创建一个可以自由添加和删除项目的网格布局。因此,即使在添加新项目后,网格一样具有良好的比例和可读性。

总结

在本文中,我们讨论了 CSS Grid 布局中的 grid-template-columns 属性,它允许我们以精确控制的方式设置网格中列宽的比例。

我们学习了如何使用固定的宽度、相对的宽度、fr 单位、repeat() 函数、auto-fitauto-fill 关键字以及 minmax() 函数来控制网格中列宽的比例。

随着我们越来越多地使用网格布局来构建现代网站,掌握这些技术非常重要。希望您喜欢这篇文章,并对如何使用 grid-template-columns 属性控制网格布局中列的宽度有更好的理解。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66496a88d3423812e483f883


猜你喜欢

  • RESTful API 中的版本控制策略

    RESTful API 是一种常用的 Web 访问方法,可以使客户端与服务器之间的数据传输变得更加简洁、易于理解和轻量。RESTful API 中需要考虑很多方面,包括安全性、性能、缓存机制,还有版本...

    5 个月前
  • Web Components 与移动混合式开发

    Web Components 是一种新的 Web 标准,它使得开发者可以构建可重用、独立的 Web 组件,进而提高整个 Web 应用的可维护性和可重用性。同时,移动混合式开发是当今移动应用开发的一个主...

    5 个月前
  • ECMAScript 2021 中的 Object.fromEntries 方法

    在 ECMAScript 2015 中引入的 Object.entries 方法可以将一个对象转换为一个键值对数组,而在 ECMAScript 2021 中新增了 Object.fromEntries...

    5 个月前
  • Babel 环境配置之 babel-register

    前言 在现代化的 JavaScript 应用程序中,前端开发人员通常使用工具链来自动化各方面的工作,例如依赖管理、打包、测试、代码风格检查等等。其中一个重要的工具是 Babel,它可以将最新版本的 J...

    5 个月前
  • 浅谈 CSS Reset 的真正作用与效果

    什么是 CSS Reset CSS Reset 是一种重置 CSS 样式的方法,通常用于解决不同浏览器之间的样式差异问题。它是通过预设一系列样式规则,覆盖浏览器本身的默认样式,使浏览器呈现出一致的样式...

    5 个月前
  • ES9 新特性解析:Async Iterators

    在 JavaScript 的演化过程中,ES9 引入了一个新特性:Async Iterators。它可以让我们更方便地处理异步的数据流,并且更加清晰地表示异步迭代操作。

    5 个月前
  • 解决 GraphQL 变量名与 JavaScript 保留字冲突问题

    在前端开发中,GraphQL 是一种流行的查询语言,但是在使用 GraphQL 过程中,我们有可能会遇到一个问题,那就是 GraphQL 变量名与 JavaScript 保留字冲突问题。

    5 个月前
  • 了解 JavaScript ES6 中的 Custom Elements

    什么是 Custom Elements Custom Elements 是ES6中一个非常实用的功能,它可以让我们自定义 HTML 元素。 相信大家都曾使用过 HTML 标记元素,如 , , 等等。

    5 个月前
  • 使用 Kubernetes 集成 Istio 实现服务网格

    前言 随着微服务的流行,伴随而来的是服务治理难题。传统的客户端发现,比如使用 Eureka 或者 Consul,随着节点数量的增加,维护的难度也与日俱增。同时,服务调用的流量也变得越来越大,流量的监管...

    5 个月前
  • 在 Express 应用中如何使用 Chai 测试中间件

    概述 在开发 Express 应用时,测试是一个必不可少的环节。Chai 是一个流行的 JavaScript 测试框架,它允许我们编写可读性高、易于维护的测试代码。

    5 个月前
  • SPA 应用中如何使用 Vuetify 实现 UI 组件

    什么是 SPA 应用? Single Page Application(单页面应用程序,简称 SPA)是随着 Web 技术的发展而出现的一种前端开发模式。与传统 Web 应用程序不同,SPA 应用在用...

    5 个月前
  • LESS 中变量和 Mixin 的作用及使用

    LESS 是一种 CSS 扩展语言,在原生 CSS 的基础上提供了更多的功能,其中变量和 Mixin 是 LESS 中最为常用的两个功能。本文将介绍 LESS 中变量和 Mixin 的作用及使用,为前...

    5 个月前
  • Mocha 测试中 chai 库的 assert 方法及使用方法

    Mocha 是一个前端自动化测试框架,可用于测试 JavaScript 代码。Chai 是一个强大的断言库,它允许您编写清晰易读的测试。 在本文中,我们将介绍 Mocha 测试中使用 Chai 库的 ...

    5 个月前
  • 在 TypeScript 中更好地使用 Angular 表单

    在使用 Angular 框架开发前端应用时,表单是不可或缺的一部分。而随着 TypeScript 的流行,越来越多的开发者开始使用 TypeScript 来编写 Angular 应用的前端代码。

    5 个月前
  • Deno 如何处理内存泄漏问题

    什么是内存泄漏? 内存泄漏指的是程序运行中分配的内存空间没有得到释放,导致空间被一直占用,浪费系统资源,最终可能导致程序崩溃。在前端开发中,JavaScript本身的垃圾回收机制可以帮助我们自动管理内...

    5 个月前
  • ECMAScript 2021 中的 Number.parseInt 和 Number.parseFloat

    ECMAScript 2021 中的 Number.parseInt 和 Number.parseFloat 在前端开发中,我们经常需要将字符串转换成数字。在 JavaScript 中,我们通常使用 ...

    5 个月前
  • RxJS 中的重要概念 Observable 解析

    什么是 Observable? Observable 是 RxJS 中的一个基础概念,表示一个可以“被观察”的对象,可以被一些“观察者”订阅并收到它在未来发生的事件。

    5 个月前
  • Cypress E2E 测试:提升网站性能的最佳解决方案

    在现代前端开发中,保证网站的性能是一个非常重要的问题。这不仅考虑到如何让网站的页面加载更快,还包括如何确保网站的交互和功能正确、用户体验优秀。在这方面,Cypress E2E 测试是一个非常有用的工具...

    5 个月前
  • 基于 ARIA 的无障碍技术

    ARIA(Accessible Rich Internet Applications)是一种语义化标准,能够帮助开发者更好地构建无障碍 Web 应用。通过为 HTML 元素添加 role 和 aria...

    5 个月前
  • Socket.io 如何处理服务器与客户端的断开连接?

    随着 Web 技术的发展,Web 应用程序变得越来越复杂,而且需要实时通信,这时 Socket.io 库就出现了。Socket.io 是一个 JavaScript 库,它可以使得 Web 应用程序实现...

    5 个月前

相关推荐

    暂无文章