百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

css grid 布局的那些事儿

myzbx 2025-02-26 13:00 21 浏览

CSS Grid 是一种为 Web 开发创建网站布局的方式。它已经存在了很多年,随着更多浏览器的支持,它终于变得越来越流行。

接下来我们将了解下 CSS Grid 及其工作原理。了解下它如何使用。

CSS 网格简介

随着布局系统的不断发展,CSS 也取得了长足的进步。随着 CSS Grid 的发布,我们终于有了一个强大的工具来创建二维布局。如今,设计师和开发人员正在使用各种布局系统,如 Flexbox 甚至纯 CSS 来创建令人惊叹的响应式网站。但是当涉及到某些任务时,这些方法中的每一种都有其自身的局限性。在这种情况下,CSS Grid 可以派上用场!

CSS 网格架构

有两种使用 CSS 网格布局的方法:隐式和显式。使用隐式网格,您只需定义所需的列数,浏览器将自动创建网格。使用显式网格,您可以定义列数和行数。这使您可以更好地控制布局,但设置起来可能更复杂。

它是一个二维布局系统。这意味着它可以处理列和行。然而,与主要是一维的传统 CSS 布局不同,CSS Grid 旨在同时处理两个维度。

它是一个基于容器的布局系统。这意味着它适用于作为容器元素的子元素的元素。容器元素定义网格,子元素放置在网格单元格中。

它是一个响应式布局系统。这意味着它可以适应不同的屏幕尺寸和分辨率。CSS Grid 也很灵活,这意味着它可以用于从简单到复杂的各种布局。

它是在现有的 CSS 盒子模型之上构建的。这意味着它可以与任何现有的 CSS 代码库一起使用。但是,它还具有一些使其独一无二的新功能。

CSS Grid 独一无二的功能

  • 提供使用基于行的定位将项目放置在网格上的能力。这使得创建非常复杂的布局成为可能,而无需使用传统的浮动或绝对定位。
  • 提供跨越列和行的能力。换句话说,您可以拥有跨越多列或多行的项目。
  • 提供通过使用行号和名称或通过定位网格的特定区域将项目放置在特定位置的能力。还包括一个算法来控制未明确放置在网格上的项目的放置。
  • 提供控制项目放置在网格区域内后如何对齐以及网格整体对齐方式的能力。
  • 提供使用像素创建使用固定轨道大小的网格的能力 - 将网格设置为适合您所需布局的指定像素。您还可以使用百分比或 fr 单位来指定灵活的轨道大小。

所有这些功能在正确使用时都可以创建在任何屏幕尺寸上都能很好显示的响应式布局。

使用 CSS 网格的好处

在构建网页时使用 CSS Grid 有很多好处。主要好处之一是它可以更轻松地创建复杂的布局。使用 CSS Grid,您可以创建具有多列和多行的布局,并且可以轻松控制页面上每个元素的大小和位置。

CSS Grid 的另一个好处是它有助于保持代码整洁有序。使用传统的 CSS,您的代码很容易变得混乱且难以阅读。但是,使用 CSS Grid,您的所有样式都应用于网格,这使您的代码更易于阅读和理解。

创建网格布局

您需要首先定义一个容器元素并为其分配一个类名。此元素将包含您的所有内容。在容器内部,您将定义一系列子元素,每个子元素将占据网格的特定区域。您可以使用各种属性来控制这些元素的大小和位置。之后,将以下 CSS 代码添加到您的样式表中:

.container {
    display: grid;
}

这将创建一个网格布局,其中一列包含所有子元素。

网格父属性

网格父元素是应用了 display: grid 属性的元素。它可以是任何类型的元素。

网格父元素的属性:

  • grid-template-columns:此属性定义列数和每列的宽度。
  • grid-template-rows:此属性定义行数和每行的高度。
  • grid-gap:此属性定义列和行之间的空间。

网格子属性

CSS Grid 中的子属性用于定义网格项的大小、位置和其他方面。这些是可以应用于网格元素的一些主要子属性:

  • grid-column:此属性用于指定网格中列的大小和位置。此属性的语法是“ grid-column: ”。
  • grid-row:该属性用于指定行在网格中的大小和位置。此属性的语法是“ grid-row: ”。
  • grid-area:该属性用于指定网格中某个区域的大小和位置。此属性的语法是“ grid-area: ”。

使用列和行

网格允许您指定布局中的列数和行数,然后将元素放置在这些列和行中。

grid-template-columns 您可以使用和 grid-template-rows 属性控制列和行的宽度。例如,您可以使用以下代码创建三列布局:

.container {
    display: grid;
    grid-template-columns: 100px 200px 300px;
}

您还可以使用百分比或分数来控制列宽。例如,以下代码将创建三列,第一列的宽度是第二列的两倍,第三列的宽度是第三列的三倍:

.container {
    display: grid;
    grid-template-columns: 50% 33.33% 25%;
}

在布局中指定列数和行数后,您可以使用 grid-column 和 grid-row 属性将元素放置在这些列和行中。例如,如果您有一个三列布局,您可以使用以下代码在第一列中放置一个元素:

.container {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 columns, each 1/3 width of the container */
    grid-column: 1;
}

结论

如果你没有使用过 grid 布局,或者使用过,但是用的不多的话,那么我建议您可以多尝试下,因为当你用的多的时候,你就会发现,它是真的好用。

相关推荐

Nextoffer极客编程挑战#022:使用HTML5画布生成文字淡入淡出效果

给定如下HTML:<divid="container"><canvasid="MyCanvas"width="350"height="200">不支持HTML5画布&l...

AI在线智能问答+Python实现(ai问答机器人)

人生苦短,我用Python!嗨,我是浪仔,你的Python造梦师~今天让我们一起来开发一款AI智能问答小工具!本小工具是一款基于Python编程语言开发的AI在线智能问答平台,采用爬虫采集数据...

OpenAI发布新功能——Canvas,写作+编程能力超级提升

阅读此文前,麻烦您点击一下“关注”,方便您进行讨论和分享。此文仅在今日头条发布,任何平台不得搬运,搬运必究!OpenAI发布新功能——Canvas,写作+编程能力超级提升OpenAI的Canvas...

英伟达最新AI技术可将文字转化为逼真的图像

英伟达的GauGAN技术已经展示了它的能力--将简单的草图变成逼真的图像。从那时起,我们看到它被应用于NVIDIACanvas,但似乎这家GPU巨头正在用其人工智能(AI)瞄准更高的目标,其推出了一...

OpenAI技术直播第四弹!推出ChatGPT内置工具Canvas,有三大核心功能

每经编辑:毕陆名昨天的Sora掀起热潮,今天OpenAI又给我们带来了升级版Canvas。Canvas正式向所有用户开放,并与OpenAI的主要模型深度集成。Canvas内置在ChatGPT中,打开C...

怎样设置EditText内部文字被锁定不可删除和修改

在做项目的时候,我曾经遇到过这样的要求,就是跟百度贴吧客户端上的一样,在回复帖子的时候,在EditText中显示回复人的名字,而且这个名字不可以修改和删除,说白了就是不可操作,只能在后面输入内容。在E...

微信小程序canvas使用(小程序canvas生成图片并保存)

在微信小程序中,你可以通过以下步骤使用canvas:在index.wxml文件中添加canvas元素。例如:。在index.js文件中,通过wx.createSelectorQuery()获取canv...

我尝试了ChatGPT Canvas,让写作和编码变得更简单

#头条精品计划#快速导读ChatGPT画布界面旨在提升写作和编码体验,特别是为ChatGPTPlus和Team订阅者提供的功能。用户可以利用人工智能优化文本和代码,提高工作效率。画布界面...

ChatGPT推出Canvas界面:让编写和编码变得更容易

鞭牛士报道,10月5日消息,据外电报道,OpenAI为ChatGPT推出了全新的“Canvas”界面,允许用户在并排协作中调整聊天机器人生成的文本或代码部分。Canvas在现有的ChatG...

鸿蒙开发之绘制文字(fillText 和 stroke)

在HarmonyOS中,使用TS(TypeScript)语法进行画布(Canvas)开发时,fillText和strokeText是两个常用的方法,分别用于填充文本和绘制文本边框。以下是这两个方法的详...

Canvas编写Python代码也太好用了!

大家知道这个月OpenAI密集发布新产品,连续12天以短视频方式每天公布一个产品功能。这两天,OpenAI公布了新的功能Canvas,顾名思义,Canvas是画布的意思,这是一个使用ChatGPT协作...

五子棋游戏(五子棋游戏网页版)

完整的游戏功能:黑白双方轮流下棋自动判定胜负支持重新开始游戏美观的界面:标准的15×15棋盘棋盘带有网格线和五个星位点棋子使用渐变效果,看起来更立体状态显示清晰用户友好:实时显示当前回合信息有效的落子...

利用Photoshop制作专业展板的详细指南与技巧分享

怎么用PS做展板(HowtoCreateaDisplayBoardUsingPhotoshop)  在现代设计中,AdobePhotoshop(通常简称为PS)是一个强大的工具,广泛...

Android 开发中文引导-动画和图形概述

安卓系统提供了各种强大的API,用来将动画应用于界面元素和自定义2D和3D图形的绘制当中。下面的小节大概的描述了可用的API和系统功能并帮助你决定那个方案最适合你的需要。动画安卓框架提供了两种动画系统...

小白鞋过时了?早着呢!(小白鞋2020)

在巴黎待了好几天了。这次是受爱马仕邀请来看它家2017秋冬女装秀的。昨天看完,本想今天就来跟大家分享我秀场见闻。但今天还要参观爱马仕皮具工坊、新品陈列室,明天再一次性地跟你们分享吧。就先发之前准备好的...