”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 网格布局:初学者的终极指南

网格布局:初学者的终极指南

发布于2024-11-08
浏览:330

欢迎回到您的 CSS 冒险!今天,我们将深入研究网页设计工具库中最强大的工具之一:CSS 网格布局。将其视为布局技术的瑞士军刀 - 多功能、精确,并且能够将您的网页转变为组织精美的杰作。准备好接受并承受它了吗?我们走吧!

Grid Layout: The Ultimate Guide for Beginners

什么是 CSS 网格布局?

想象一下,您正在玩​​俄罗斯方块游戏,但不是堆叠随机块,而是由您决定一切的去向。这基本上就是 CSS 网格的作用!它允许您创建复杂的、基于网格的布局,既灵活又易于管理。无论您是在处理基本的两栏布局还是成熟的杂志风格页面,CSS 网格都会为您提供支持。

为什么使用 CSS 网格?

在 Grid 出现之前,Web 开发人员必须依靠笨重的方法(例如浮动、表格,甚至嵌套 div)来创建布局。这就像试图用方块搭建一座乐高城堡。但通过 CSS Grid,您可以获得创建真正令人惊叹的内容所需的所有部分。这就是您会喜欢它的原因:

  1. 灵活性:创建您可以梦想的任何布局,从简单到复杂。
  2. 精度:以最小的努力控制间距、对齐和顺序。
  3. 简单性:干净、可读的代码,易于维护和修改。

设置网格:基础知识

让我们从基础开始。要创建网格,您需要一个网格容器和一些网格项。容器是魔法发生的地方,项目是放置在网格上的元素。

1
2
3
4

现在,让我们将该容器转换为 CSS 中的网格:

.grid-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

.grid-item {
    background-color: #007BFF;
    color: white;
    padding: 20px;
    text-align: center;
}

了解网格属性

让我们来分解一下:

  • display: grid:这会将您的容器变成网格
  • grid-template-columns:repeat(2, 1fr):这将创建两个等宽的列。 1fr 是一个灵活的单位,占用可用空间的一部分
  • 间隙:10px:这会在网格项之间添加 10px 间隙

将物品放在网格上:你就是老板

现在我们有了网格,让我们看看如何放置项目。使用 CSS 网格,您可以准确指定每个项目的去向,就像战略大师规划终极游戏板一样。

.grid-container {
    display: grid;
    grid-template-columns: 1fr 2fr;
    grid-template-rows: auto;
    gap: 10px;
}

.grid-item:first-child {
    grid-column: 1 / 3;
}

在此示例中,第一个网格项跨越两列,而其余的则整齐地保留在其车道中。您可以通过使用 grid-column 和 grid-row 定义项目的起点和终点,将项目放置在网格中的任何位置。这就像能够将您的车斜停在停车场 - 因为您可以!

先进的网格技术:释放你内心的架构师

准备好让事情更上一层楼了吗? CSS 网格不仅仅是将项目放置在盒子中;它还包括将项目放置在盒子中。这是关于精确而轻松地创建整个布局。

1. 嵌套网格

将其视为网格中的网格 - 布局可能性的开始。

.grid-container {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 20px;
}

.nested-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

这里,.nested-grid 是主网格内的一个网格项,同时也是一个网格容器本身,允许您创建更复杂的布局。

2. 自动填充和自动调整

希望您的网格根据可用空间进行调整?满足自动填充和自动调整。

.grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 10px;
}

此设置会自动创建尽可能多的至少 150 像素宽的列。非常适合响应式设计,您希望内容能够优雅地调整,就像猫总是用脚着地一样。

总结

CSS Grid 是创建强大且灵活的布局的终极工具。一开始它可能看起来有点令人畏惧,但是一旦你掌握了它,你就会想知道没有它你是如何生活的。使用 Grid,您不仅仅是构建一个网页;您还可以构建一个网页。你正在制作一个视觉上令人惊叹的、组织良好的杰作。

编码愉快!

版本声明 本文转载于:https://dev.to/gdebojyoti/grid-layout-the-ultimate-guide-for-beginners-3ek8?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中3个Party Package将另一个PAXPANCE带有导入式套件之间的另一个软件包,并在导入式套件之间导入另一个软件包。如回声消息所证明的那样: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    编程 发布于2025-07-03
  • FastAPI自定义404页面创建指南
    FastAPI自定义404页面创建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    编程 发布于2025-07-03
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-07-03
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-07-03
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-07-03
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-07-03
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-07-03
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-07-03
  • C++成员函数指针正确传递方法
    C++成员函数指针正确传递方法
    如何将成员函数置于c 的函数时,接受成员函数指针的函数时,必须同时提供对象的指针,并提供指针和指针到函数。需要具有一定签名的功能指针。要通过成员函数,您需要同时提供对象指针(此)和成员函数指针。这可以通过修改Menubutton :: SetButton()(如下所示:[&& && && &&华)...
    编程 发布于2025-07-03
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 c...
    编程 发布于2025-07-03
  • 编译器报错“usr/bin/ld: cannot find -l”解决方法
    编译器报错“usr/bin/ld: cannot find -l”解决方法
    错误:“ usr/bin/ld:找不到-l “ 此错误表明链接器在链接您的可执行文件时无法找到指定的库。为了解决此问题,我们将深入研究如何指定库路径并将链接引导到正确位置的详细信息。添加库搜索路径的一个可能的原因是,此错误是您的makefile中缺少库搜索路径。要解决它,您可以在链接器命令中添加...
    编程 发布于2025-07-03
  • Java的Map.Entry和SimpleEntry如何简化键值对管理?
    Java的Map.Entry和SimpleEntry如何简化键值对管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    编程 发布于2025-07-03
  • C++中如何将独占指针作为函数或构造函数参数传递?
    C++中如何将独占指针作为函数或构造函数参数传递?
    在构造函数和函数中将唯一的指数管理为参数 unique pointers( unique_ptr [2启示。通过值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法将唯一指针的所有权转移到函数/对象。指针的内容被移至功能中,在操作...
    编程 发布于2025-07-03
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-07-03
  • Java中假唤醒真的会发生吗?
    Java中假唤醒真的会发生吗?
    在Java中的浪费唤醒:真实性或神话?在Java同步中伪装唤醒的概念已经是讨论的主题。尽管存在这种行为的潜力,但问题仍然存在:它们实际上是在实践中发生的吗? Linux的唤醒机制根据Wikipedia关于伪造唤醒的文章,linux实现了pthread_cond_wait()功能的Linux实现,利用...
    编程 发布于2025-07-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3