CSS Grid布局:从入门到实战

CSS Grid布局:从入门到实战

一、初识Grid布局

还在为网页布局发愁吗?Flexbox虽然好用,但当遇到复杂布局时,CSS Grid才是真正的王者。Grid布局是CSS中最强大的二维布局系统,它就像一张无形的网格纸,让我们可以精准控制每个元素的位置。

.container {display: grid;grid-template-columns: 100px 200px auto;grid-template-rows: 80px auto 60px;gap: 15px;
}

这段简单的代码就创建了一个3列3行的网格系统,是不是很像Excel表格?但Grid可比Excel灵活多了!

二、核心概念解析

1. 网格容器(Grid Container)

就像Flexbox需要一个flex容器一样,Grid布局也需要一个容器元素:

<div class="grid-container"><div class="item1">1</div><div class="item2">2</div><!-- 更多子元素 -->
</div>

2. 网格线(Grid Lines)

网格线是Grid布局的精髓所在。想象一下,网格中的垂直线和水平线都有编号,我们可以通过这些线号来定位元素。

3. 网格轨道(Grid Tracks)

轨道就是相邻两条网格线之间的空间,可以是行轨道(row track)或列轨道(column track)。

三、常用属性详解

1. 定义网格

.grid-container {display: grid;grid-template-columns: 1fr 2fr 1fr; /* 三列,比例1:2:1 */grid-template-rows: 100px auto 50px; /* 三行 */gap: 10px; /* 行列间距 */
}

fr单位是Grid特有的,表示剩余空间分配比例。

2. 项目定位

.item1 {grid-column: 1 / 3; /* 从第1列线到第3列线 */grid-row: 1; /* 占据第1行 */
}.item2 {grid-area: 2 / 2 / 4 / 3; /* 简写:行开始/列开始/行结束/列结束 */
}

四、实战案例

1. 经典三栏布局

.layout {display: grid;grid-template-areas:"header header header""sidebar main ads""footer footer footer";grid-template-columns: 200px 1fr 200px;grid-template-rows: auto 1fr auto;height: 100vh;
}.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.ads { grid-area: ads; }
.footer { grid-area: footer; }

2. 响应式图片墙

.gallery {display: grid;grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));gap: 15px;
}@media (max-width: 600px) {.gallery {grid-template-columns: 1fr;}
}

五、Grid布局小技巧

  1. 命名网格线:给网格线起名字更方便定位

    grid-template-columns: [start] 1fr [center] 1fr [end];
    
  2. 隐式网格:当项目超出定义的范围时自动创建

    grid-auto-rows: minmax(100px, auto);
    
  3. 对齐方式

    justify-items: center; /* 水平居中 */
    align-items: center; /* 垂直居中 */
    

六、Grid vs Flexbox

  • Flexbox:适合一维布局(行或列)
  • Grid:适合二维布局(行和列)

两者不是竞争关系,而是互补关系。在实际项目中,我经常在Grid容器中使用Flexbox来排列子元素。

七、浏览器兼容性

现代浏览器对Grid的支持已经相当完善,包括Edge、Firefox、Chrome、Safari等。对于旧版浏览器,可以使用特性查询(@supports)提供回退方案。

@supports (display: grid) {/* Grid布局样式 */
}

八、总结

CSS Grid布局彻底改变了我们对网页布局的认知。从简单的网格系统到复杂的响应式设计,Grid都能游刃有余。虽然学习曲线略陡峭,但一旦掌握,你会发现它比传统的浮动、定位布局高效得多。

建议从简单的布局开始练习,逐步尝试更复杂的场景。记住,实践是最好的老师!

小贴士:Chrome浏览器的开发者工具中有强大的Grid调试功能,可以帮助你直观地看到网格线,是学习Grid的绝佳帮手。

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

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

相关文章

MongoDB 应用实战

1. java 原生客户端 引入maven 1 <dependencies> 2 <dependency> 3 <groupId>org.mongodb</groupId> 4 <artifactId>mongodb‐driver‐sync</artifactId> 5 <version>4.1.1</version> 6 </dependency> 7 </depende…

linux下tcp/ip网络通信笔记1,

本文章主要为博主在学习网络通信的笔记一个Udp_echo_server,和client的代码实现 1&#xff0c;网络发展&#xff0c;网络协议&#xff0c;意识到网络通信——不同主机的进程间通信&#xff0c; 2&#xff0c;学习如何在应用层调用系统提供的接口进行通信&#xff0c;echo_Udp…

前端二进制数据指南:从 ArrayBuffer 到高级流处理

前端开发中&#xff0c;二进制数据是处理文件、图像、音视频、网络通信等场景的基础。以下是核心概念和用途的通俗解释&#xff1a; 前端二进制数据介绍 1. 什么是前端二进制数据&#xff1f; 指计算机原始的 0 和 1 格式的数据&#xff08;比如一张图片的底层代码&#xff…

Cacti 未经身份验证SQL注入漏洞

0x00 前言 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。 Cacti是通过 snmpget来获取数据&#xff0c;使用 RRDtool绘画图形&#xff0c;而且你完全可以不需要了解RRDtool复杂的参数。 0x01 漏洞描述 漏洞存在于从graph_view.php文件调用的growt…

使用国内源加速Qt在线安装

简介&#xff1a; 在线安装Qt时&#xff0c;会发现下载非常缓慢&#xff0c;可以用过使用国内镜像源来加速安装过程。 在线安装包的下载过程&#xff1a; 1&#xff0c;打开下载页面 https://www.qt.io/download-open-source 2&#xff0c;点击 Download the Qt online ins…

C#上位机RS485通信控制变频器

C#上位机使用Modbus RTU协议控制变频器 一、RTU报文格式示例 通信命令码&#xff1a; 03H:读从机参数 06H:写从机参数 10H:写多个参数上位机写单个寄存器&#xff1a;【从机地址】1字节【命令码】1字节【寄存器地址高-低】2字节【数据值高-低】2字节【CRC校验值低-高】…

OCC笔记:Brep格式

1. BREP格式简介 BREP格式是Open CASCADE内核&#xff08;OCCT&#xff09;的原生数据模型&#xff0c;直接描述几何体的边界表示&#xff08;面、边、顶点拓扑关系及几何参数&#xff09;。于OCCT内核的算法计算&#xff08;如布尔运算、曲面细分&#xff09;&#xff0c;存储…

Vue3进行工程化项目,保姆级教学(编译软件:vscode)大部分编译平台适用

目录 1. 创建vue工程 1.1 第一步 1.2 选择名称和工件 1.3 选择语言 1.4 自动下载js 1.5 运行vue工程 1.6 成功页面 2. 更改vue工程安装的位置 3. 更改运行工程方式 第一步 第二步 ​编辑 第三步 调试 ​编辑 运行项目 前面所学都是vue3的基础&#xff0c;为了简…

CSS常用选择器

CSS选择器用于选择HTML元素并为其应用样式。以下是CSS中最常用的选择器类型&#xff1a; 基本选择器 1.元素选择器 - 通过HTML标签名选择元素 p { color: blue; } 2.类选择器 - 通过class属性选择元素&#xff08;以.开头&#xff09; .warning { color: red; } 3.ID选择…

EmberGen导出序列图到UE5

选择Render节点 调整节点相关参数 然后选择一个目录 点击导出Export Now即可 材质用FlipBook 如果是特效就SubUV

EXCEL Python 实现绘制柱状线型组合图和树状图(包含数据透视表)

1、组合图、数据透视表 &#xff08;1&#xff09;数据预处理 知识点 日期函数 year() month()数据透视表操作 同比计算公式 环比计算公式 &#xff08;2&#xff09;excel 数据透视表插入组合图 a.2015~2017数据集处理方式&#xff1a; 操作&#xff1a; 结果 b.2020~20…

LabVIEW光谱检测系统

腔衰荡光谱技术&#xff08;CRDS&#xff09;凭借高精度和高灵敏度特性&#xff0c;成为微量气体浓度检测的常用方法&#xff0c;而准确获取衰荡时间是该技术应用的关键。基于LabVIEW平台设计腔衰荡信号在线处理系统&#xff0c;实现对衰荡信号的实时采集、平均、拟合、显示和保…

Flask快速入门和问答项目源码

Flask基础入门 源码&#xff1a; gitee&#xff1a;我爱白米饭/Flask问答项目 - 码云 目录 1.安装环境2.【debug、host、port】3.【路由params和query】4.【模板】5.【静态文件】6.【数据库连接】6.1.安装模块6.2.创建数据库并测试连接6.3.创建数据表6.4.ORM增删改查 6.5.ORM模…

flutter长列表 ListView、GridView、SingleChildScrollView、CustomScrollView区别

组件名称用途/适合场景是否懒加载支持列表结构用法复杂度SingleChildScrollView适用于内容数量不大、不重复的页面&#xff08;如表单、静态内容&#xff09;❌ 否❌ 否⭐⭐ListView适用于垂直方向的长列表&#xff0c;自动滚动&#xff1b;适合展示大量数据✅ 支持✅ 是⭐⭐Li…

鸿蒙OSUniApp 开发的一键分享功能#三方框架 #Uniapp

使用 UniApp 开发的一键分享功能 在移动应用开发中&#xff0c;分享功能几乎是必不可少的一环。一个好的分享体验不仅能带来更多用户&#xff0c;还能提升产品的曝光度。本文将详细讲解如何在 UniApp 框架下实现一个简单高效的一键分享功能&#xff0c;适配多个平台。 各平台分…

Vue-监听属性

监听属性 简单监听 点击切换名字&#xff0c;来回变更Tom/Jerry&#xff0c;输出 你好&#xff0c;Tom/Jerry 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>监听属性</title><!-- …

DeepSeek 赋能物联网:从连接到智能的跨越之路

目录 一、引言&#xff1a;物联网新时代的开启二、DeepSeek 技术揭秘2.1 DeepSeek 是什么2.2 DeepSeek 技术优势 三、DeepSeek 与物联网的融合之基3.1 物联网发展现状与挑战3.2 DeepSeek 带来的变革性突破 四、DeepSeek 在物联网的多元应用场景4.1 智慧电力&#xff1a;开启能源…

3.6/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Global, regional, and national burden of geriatric depressive disorders in people aged 60 years and older: an analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.1186/s12991-025-00560-2 中文标题&#xff1a;60 岁及以上人…

LVGL学习笔记

文章目录 一、 LVGL移植教程(GD32)一 并行驱动 LED二三一、 LVGL移植教程(GD32) 参考链接 1.GD32+LVGL移植教程(超详细)——基于GD32F303X系列MCU 一 并行驱动 LED 根据您提供的引脚信号(DCLK、DISP、HSYNC、VSYNC、DE),可以判断这是一款采用 TTL/Parallel RGB 接口…

软件架构之--论微服务的开发方法1

论微服务的开发方法1 摘要 2023年 2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船图纸审查机构提供一个便捷的渔船图纸电子化审查服务平台。在此项目中,我作为项目组成员参与项目的建设工作,并…