分享一些关于 CSS Grid 基础入门知识

news2024/11/16 15:27:30

b79142de625c5afd14ae37de4b01e74c.jpeg

网格系统(CSS Grid)是CSS中最重要的特性之一。它能够以简单的方式将元素对齐到列和行中。CSS网格使得设计复杂且响应式的网页变得更加容易,无需使用浮动、表格或定位。它还具有许多更强大的功能,如果你多加练习,就能发现它们。

在本文中,我们将通过一些实际示例来学习CSS网格,以帮助你更好地理解。让我们开始吧。

定义一个容器

要开始使用网格系统,你需要定义一个容器div或父级div,将所有子元素包裹在其中,如下所示:

<div class="container">
      <div class="child">1</div>
      <div class="child">2</div>
      <div class="child">3</div>
      <div class="child">4</div>
  </div>

当我们在CSS中将父级div的display属性设置为grid或inline-grid时,父级div将成为一个网格容器。

下面是一个例子:

.container {
  display: grid;
  background-color: crimson;
  padding: 10px;
}
.container > .child {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  font-size: 30px;
  margin: 5px;
}

16be6f626d8ffac661ca389b89f17708.jpeg

现在你可以使用容器属性,例如justify-content和align-items,来将子元素居中在容器div内。我们将在下面的示例中介绍这些属性。

网格模板列(grid-template-columns)

属性grid-template-columns用于定义网格容器中的列数。它还可以帮助定义每个列的宽度。

假设你想在网格容器内定义3列。在这种情况下,你可以使用分数(fractions)作为grid-template-columns属性的值。分数用于将网格布局分割成列或行。

看看下面的例子:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  background-color: crimson;
  padding: 10px;
}
.container > .child {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  font-size: 30px;
  margin: 5px;
}

如你在上面看到的,我们使用了3个分数1fr来将网格容器分为3列。

baf82c9d6bca70b30d3288a65b1eb107.jpeg

grid-template-columns属性还可以用于指定列的宽度。

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

c0828ab22afe39f840cf424c91fdcd55.jpeg

除此之外,你还可以将grid-template-columns属性设置为auto。这样,它会根据屏幕大小自动拉伸列的宽度。

下面是一个例子:

.container {
  display: grid;
  grid-template-columns: auto auto;
}

bed6a4b096e5e42bdaf18a73a9548117.jpeg

其中一个最好的功能是你可以轻松地使用grid-template-columns和minmax()函数创建自适应布局,该函数根据屏幕大小设定最小宽度和最大宽度。

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

例如,假设你需要在一个电子商务应用中展示产品列表。你的任务是使其具有响应式布局,因此你决定在桌面上每列显示三个产品,在平板上每列显示两个产品,而在手机上每列只显示一个产品。请看下面的示例:

HTML:

<div class="grid">
 <div class="item">Product 1</div>
 <div class="item">Product 2</div>
 <div class="item">Product 3</div>
 <div class="item">Product 4</div>
 <div class="item">Product 5</div>
 <div class="item">Product 6</div>
</div>

CSS:

*{
 margin: 0;
 padding: 0;
 box-sizing: border-box;
 font-family: sans-serif;
}
body{
 height: 100vh;
 margin-top: 150px;
}
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.item{
 background: red;
 padding: 20px;
 color: wheat;
 margin: 10px;
}

这样做也会根据屏幕大小自动定义列的数量。当屏幕宽度达到最小尺寸时,你将只有1列宽度为1fr。如果屏幕宽度太大,你将拥有许多宽度为200px的列。

网格模板行(grid-template-rows)

属性grid-template-rows用于定义网格容器中的行数。它与grid-template-columns类似,唯一的区别是现在我们是在处理行而不是列。

假设我们想要定义一个具有两列和两行的网格容器。我们可以使用grid-template-rows和grid-template-columns两个属性来实现。下面是一个示例:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}

e48feca0c0547203723496b9e8cd9925.jpeg你也可以使用grid-template-rows属性来定义行的宽度,或者像我们使用grid-template-columns那样自动拉伸行的宽度。它们之间没有区别,只是我们是在处理行而不是列。

网格间隔属性(grid-gap)

网格间隔属性grid-gap用于在父元素内设置列和行之间的间隔。

.container{
 display: grid;
 grid-template-columns: auto auto;
 grid-gap: 15px;
}

7474b99322a0ff78b2b25dcd878937d9.jpeg

对齐内容属性(align-content)

对齐内容属性align-content用于垂直对齐容器内的所有网格。

下面是一个例子:

.container {
  display: grid;
  grid-template-columns: auto auto;
  grid-template-rows: 50px 80px;
  height: 400px;
  align-content: center;
  background-color: crimson;
  padding: 10px;
}

2a10eb60d4770e94870aaa687dfa2c4f.jpeg

还有其他一些可以传递给align-content的值,例如space-between(两端对齐)、start(顶部对齐)、space-around(均匀分布)、end(底部对齐)等。你可以在文本编辑器上尝试它们,以查看它们之间的区别。

网格项(Grid Items)

CSS网格还有一些有用的属性,你可以将它们传递给网格容器的子元素,以便轻松设计复杂的网格布局。其中一些属性包括:grid-column 、grid-row 、grid-area ,你可以在W3schools网站上了解它们,因为如果我在这篇文章中详细讲解它们,你可能要滚动一辈子才能看完。

结论

网格是一个令人惊叹的CSS特性,它使你能够轻松设计复杂且响应式的布局结构。我强烈建议你多加练习这个特性,因为只有通过实践才能更好地掌握它。

由于文章内容篇幅有限,今天的内容就分享到这里,文章结尾,我想提醒您,文章的创作不易,如果您喜欢我的分享,请别忘了点赞和转发,让更多有需要的人看到。同时,如果您想获取更多前端技术的知识,欢迎关注我,您的支持将是我分享最大的动力。我会持续输出更多内容,敬请期待。

原文:
https://medium.com/javascript-in-plain-english/css-grid-explained-with-examples-d64cf241e1cf

作者:Mehdi Aoussiad

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/711186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

北京大学2018计算机学科夏令营上机考试

目录 A:计算两个日期之间的天数【暴力不水】 B:回文子串【暴力不水】 C:The Die Is Cast【DFS】 D:Euro Efficiency【看不懂】 E:重要逆序对【归并排序】 F:Tram【看不懂】 G:食物链【图】 H:DFS spanning tree【不会】 A:计算两个日期之间的天数【暴力不水】 //…

《微服务架构设计模式》第四章 使用Saga管理事务

内容总结自《微服务架构设计模式》 使用Saga管理事务 一、XA解决方案存在问题二、使用Saga管理事务Saga是什么补偿事务是什么Saga协调模式协同式Saga编排式Saga 隔离性Saga结构 三、总结 一、XA解决方案存在问题 在多个服务、数据库和消息代理之间维持数据一致性的传统方式是采…

小黑重庆归来,眼睛复查顺利,见到了三年没见的线上同门的leetcode之旅:剑指 Offer II 015. 字符串中的所有变位词

小黑代码1:滑动窗口 class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:# 字符串长度n_s len(s)n_p len(p)if n_s < n_p:return []# 差值数组arr [0] * 26# 初始窗口for i in range(n_p):arr[ord(p[i])-97] - 1arr[ord(s[i])-97] 1# 计算初始窗口…

Web服务器群集:Tomcat配置https证书

目录 一、理论 1.SSL 2.HTTPS协议和HTTP协议的区别 3.https证书配置 4.tomcat强制使用https 二、实验 1.https证书配置过程 2.tomcat强制使用https 三、总结 一、理论 1.SSL &#xff08;1&#xff09;概念 SSL是网络加密传输协议&#xff0c;是支持在网络服务器(主…

chatgpt赋能python:烧录代码过程是怎样的

烧录代码过程是怎样的 烧录代码是将编写好的程序代码烧录进内置闪存器件&#xff08;Flash&#xff09;或外部存储器&#xff08;SD卡、EEPROM等&#xff09;中的过程。本文将介绍烧录代码的具体过程和常用工具&#xff0c;以及一些注意事项。 烧录代码的步骤 步骤一&#x…

分布式负载均衡 Ribbon

一、Ribbon简介 是Netfix发布的负载均衡&#xff0c;Eureka一般配合Ribbon进行使用&#xff0c;基于HTTP和TCP的客户端负载均衡工具。 只有负载均衡的能力&#xff0c;不具有发送请求的能力&#xff0c;要配合服务通信组件。 RestTemplate 针对各种类型的 HTTP 请求都提供了相…

青少年机器人技术一级考试备考重点(一):机器人常识

随着机器人技术的飞速发展&#xff0c;越来越多的青少年开始关注并参与其中。青少年机器人技术考试作为一项评估学生机器人技术水平的重要考试&#xff0c;备受广大青少年和家长的关注。为了更好地备战青少年机器人技术一级考试&#xff0c;了解考试的学习要点和备考重点是非常…

LeetCode-67. 二进制求和

LeetCode-67. 二进制求和 1、题目描述2、解题思路3、代码实现4、解题记录 ) 1、题目描述 题目描述&#xff1a; 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例2&…

kafka实现消息接受和发送

1、首先引入依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency> <dependency><groupId>org.springframework.kafka</groupId><artifactId>spr…

第九十五天学习记录:C++核心:类和对象Ⅳ(五星重要)

C对象模型和this指针 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上 #include<iostream> using namespace std;class Person {int m_A;//非静态成员变量 属于类的对象上static int m_B;//静态成…

Gradio库的Gallery模块介绍与select方法详解

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Flask boostrap实现图片视频上传下载展示

Flask boostrap实现图片视频上传下载展示 1、展示效果2、前端代码3、后端代码 1、展示效果 项目目录结构 2、前端代码 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&l…

Go 程序是怎样跑起来的

Go 程序是怎样跑起来的 引入 我们从一个 helloworld 的例子开始 package mainimport "fmt"func main() {fmt.Println("hello world") }用 vim 要打开&#xff0c;输入命令&#xff1a; :%!xxd下面是输出 00000000:7061 636b 6167 6520 6d61 696e 0a0a…

tomcat概述,优化,多实例部署

目录 一、概述 二、三个容器 1、Web 容器&#xff1a; 2、Servlet 容器&#xff1a; 3、JSP 容器&#xff1a; 三、Tomcat 功能组件结构 四、优化 1、启动速度优化 2、配置参数优化 五、多实例部署 一、概述 Tomcat 是 Java 语言开发的&#xff0c;Tomcat 服务器是一…

ubuntu下安装docker遇到的问题

如果你还没有安装虚拟机&#xff0c;推荐一篇关于安装Ubuntu的详细教程&#xff1a; VMware虚拟机安装Ubuntu20.04详细图文教程https://blog.csdn.net/weixin_41805734/article/details/120698714首先&#xff0c;安装docker的前提是虚拟机能够联网&#xff0c;如果能看到右上…

官方文档中docker安装php插件xdebug

docker安装php插件 直接上代码常见问题如果查看系统类型如何查看xdebug合适的版本安装异常提示Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.configure: error: in /tmp/pear/temp/pea…

Zookeeper 分布式锁

优质博文&#xff1a;IT-BLOG-CN 一、简介 随着公司业务的发展&#xff0c;单机应用已经无法支撑现有的用户量&#xff0c;之前采用synchronized和Lock锁已经无法满足分布式系统的要求。我们应用程序目前都会运行120台&#xff0c;节假日会扩容至240台&#xff0c;属于多JVM环…

领域事件驱动(二)聚合与聚合根的了解

上一章对值对象以及实体进行了一些简单的讲解&#xff1a; 聚合 聚合&#xff1a;我们把一些关联性极强、生命周期一致的实体、值对象放到一个聚合里。 聚合有一个聚合根和上下文边界&#xff0c;这个边界根据业务单一职责和高内聚原则&#xff0c;定义了聚合内部应该包含哪…

U-Boot移植 - 2_环境搭建和u-boot烧录启动

文章目录 1. 编译环境搭建1.1 交叉编译器下载1.2 交叉编译器安装 2. 编译原厂uboot3. 烧录开发板3.1 烧录到SD卡3.2 启动开发板 1. 编译环境搭建 1.1 交叉编译器下载 嵌入式Linux开发&#xff0c;程序编译通常在电脑端的Linux&#xff08;如虚拟机中的Ubuntu)下进行编译&…

阿里云ECS部署

nginx 安装nginx # 查看dnf版本 dnf --version# 查找是否是否安装 dnf search nginx# 安装nginx dnf install nginx# 启动nginx systemctl start nginx# 查看nginx运行状态 systemctl status nginx# 相当于开机自启&#xff08;重启服务器&#xff0c;nginx自动启动&#xff…