【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容)
- 第一章 层叠、优先级与继承(已完结)
 
- 1.1 层叠
 - 1.2 继承
 - 1.3 特殊值
 - 1.4 简写属性
 - 1.5 CSS 渐进式增强技术
 - 1.6 本章小结
 - 第二章 相对单位(已完结)
 
- 2.1 相对单位的威力
 - 2.2 em 与 rem
 - 2.3 告别像素思维
 - 2.4 视口的相对单位
 - 2.5 无单位的数值与行高
 - 2.6 自定义属性
 - 2.7 本章小结
 - 第三章 文档流与盒模型(已完结)
 
- 3.1 常规文档流
 - 3.2 盒模型
 - 3.3 元素的高度
 - 3.4 负的外边距
 - 3.5 外边距折叠
 - 3.6 容器内的元素间距问题
 - 3.7 本章小结
 - 第四章 Flexbox 布局(已完结)
 
- 4.1 Flexbox 布局原理
 - 4.2 弹性子元素的大小
 - 4.3 弹性布局的方向
 - 4.4 对齐、间距等细节处
 - 4.5 本章小结
 - 第五章 网格布局(已完结) ✔️
 
- 5.1 构建基础网格
 - 5.2 网格结构剖析 (上)
 
- 5.2.1 网格线的编号(下)
 - 5.2.2 网格与 Flexbox 配合(下)
 - 5.3 两种替代语法
 
- 5.3.1 命名网格线
 - 5.3.2 命名网格区域
 - 5.4 显式网格与隐式网格(上)
 
- 5.4.1 添加变化 (中)
 - 5.4.2 让网格元素填满网格轨道(下)
 - 5.5 子网格(全新增补内容)
 - 5.6 对齐相关的属性 ✔️
 - 5.7 本章小结 ✔️
 
文章目录
- 5.6 对齐相关的属性 Alignment properties
 - 5.7 本章小结 Summary
 

《CSS in Depth》新版封面
5.6 对齐相关的属性 Alignment properties
网格布局模块规范里的对齐属性有一些与 Flexbox 相同,还有一些则是新属性。上一章介绍 Flexbox 布局时已经涵盖了其中大部分内容,这一节就来看看这些属性在网格布局中的用法。想要对网格布局的各个方面做进一步控制,了解这些属性或许会方便很多。
CSS 给网格布局提供了三个以 justify- 开头的对齐属性:justify-content、justify-items 以及 justify-self。它们控制了网格元素在水平方向上的位置。我是这样记的:就像在文字处理器里调整文字位置,让它们在水平方向上排布。
此外还有三个以 align- 开头的对齐属性:align-content、align-items 以及 align-self。它们控制了网格元素在垂直方向上的位置。我是通过类比 行内对齐(inline alignment) 中的 vertical-align 属性来记住它们的。这些属性如图 5.22 所示。

图 5.22 网格内的对齐属性
要设置网格容器内的网格轨道在水平和垂直方向上的位置,可以使用 justify-content 和 align-content 属性实现,尤其是在网格元素的尺寸无法填满网格容器的时候。参考以下样式代码:
.grid {display: grid;height: 1200px;grid-template-rows: repeat(4, 200px);
}
 
这段代码明确设置了网格容器的高度为 1200px,但水平网格轨道的有效总高度仅为 800px;网格轨道在剩下那 400px 的空间内如何分布,可以通过 align-content 属性进行设置。该属性可以设为下列有效值:
start—— 将网格轨道放在网格容器的 左上方(top/left)。end—— 将网格轨道放在网格容器的 右下方(bottom/right)。center—— 将网格轨道放在网格容器的 中间(in the middle)。stretch—— 网格轨道 拉伸 至填满网格容器。space-between—— 将剩余空间 平均分配 到每个网格轨道之间(将覆盖任何gap设置)。space-around—— 将空间均布到每个网格轨道间,且在两端各加上 一半 的间距。space-evenly—— 将空间均布到每个网格轨道间,且在两端各加上 同等大小 的间距。
想了解更多对齐属性(justify/alignment properties)的示例,请访问 https://gridbyexample.com/。Grid by Example 是一个极好的网站资源,里面汇集的大量网格布局示例,都是由开发者兼 W3C 成员的 Rachel Andrew 大佬精心整理而成。
最后再来聊聊与定位相关的简写属性:place-content、place-items 以及 place-self。这些属性可以同时声明带 align-* 和 justify-* 前缀的属性值,例如:place-content: center start 等效于 align-content: center; justify-content: start。
因为网格布局的内容非常多,所以本章介绍的内容都是网格布局必须掌握的核心概念。建议您对网格布局做更多探索试验。网格有很多种组合方式,无法在一章里逐一介绍,因此您需要自我挑战一下,去尝试一些新事物。在遇到一个有趣的网页布局时,看看能否用网格布局来实现。
译注
关于水平方向对齐的那三个
justify开头的属性,作者提供的记忆方式可能有点抽象,这里略作补充。所谓的“文字处理器”,可以将其理解为微软旗下的办公软件 Word。它在对齐一行文本的时候,使用的术语就是justify。根据上海译文出版社 2000 年 12 月出版的《新英汉词典》(世纪版),这个单词在印刷行业中的原意为“调整(铅字)的间隔使齐行”。对照如下图所示的 Word 中英双语提示信息,可以进一步加深理解(这也是设置文字两端对齐的快捷键选择 Ctrl + J 的根本原因):
补图1 微软办公软件 Word 就文字对齐给出的双语对照注释
5.7 本章小结 Summary
- 网格(Grid)定义了一套基于行与列的页面布局,在元素定位时实现了各元素间的相互关联。
 - 网格布局与 Flexbox 布局相辅相成,共同构成了一套完整的布局系统。
 - 网格布局中对同一元素定位有三种实现方案,分别对应三类写法:网格线编号、命名网格线、以及命名网格区域。可以根据实际的布局需求任选一种对您而言最直观的解决方案。
 auto-fill/auto-fit以及隐式网格的定位在布局大量或未知数量的网格元素时效果尤为显著。- 相比普通网格仅对单一父子结构生效的功能设定,子网格可以在深度嵌套的 DOM 结构下轻松实现元素间更深层次的对齐。
 - Flexbox 布局中相同的对齐属性(alignment properties)也同样适用于网格布局。
 
关于《CSS in Depth》(中译本书名《深入解析 CSS》)
| 第 1 版 | 第 2 版 | |
|---|---|---|
| 读者评分 | 原版:4.7(亚马逊);中文版:9.3(豆瓣) | 原版:5.0(亚马逊);中文版:暂无,待出版 | 
| 出版时间 | 原版:2018 年 3 月;中文版:2020 年 4 月 | 原版:2024 年 7 月;中文版:暂无,待出版 | 
| 原价 | 原版:$44.99;中文版:¥139.00 | 原版:$59.99;中文版:暂无,待出版 | 
| 现价 | 原版:$36.49;中文版:¥52.54 起步 | 原版:$52.09;中文版:暂无,待出版 | 
| 原版国内预订 | 起步价 ¥461.00 | 起步价 ¥750.00 | 
本专栏为该书第 2 版高分译文专栏,全网首发,精译精校,持续更新,计划今年内完成全书翻译,敬请期待!!!
相关文章:
【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…...
Qt圆角窗口
Qt圆角窗口 问题:自己重写了一个窗口,发现用qss设置圆角了,但是都不生效,不过子窗口圆角都生效了。 无边框移动窗口 bool eventFilter(QObject *watched, QEvent *evt) {static QPoint mousePoint;static bool mousePressed f…...
研究生第一次刷力扣day1
1.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标 直接采用暴力求解,其他解答案看不懂 大致思想:先用len函数求出数组的长度n,然后一个个遍…...
flink自定义process,使用状态求历史总和(scala)
es idea maven 依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-elasticsearch7_2.11</artifactId> <version>1.11.1</version> </dependency> import org.apache.flink.api.common.eve…...
股指期货理论价格计算公式是什么?
股指期货,作为金融衍生品的一种,其价格与现货市场的股指价格紧密相关,但又受到多种因素的影响。了解股指期货理论价格的计算公式,对于投资者进行套利交易、风险管理等具有重要意义。本文将详细解读股指期货理论价格的计算公式&…...
解决R包依赖版本不兼容问题
ERROR: dependency ‘Matrix’ is not available for package ‘irlba’ removing ‘/root/anaconda3/envs/myview/lib/R/library/irlba’ ERROR: dependency ‘Matrix’ is not available for package ‘N2R’ removing ‘/root/anaconda3/envs/myview/lib/R/library/N2R’ ER…...
HarmonyOS开发者基础认证考试试题
文章目录 一、判断题二、单选题三、多选题 因考试只有91分,所以下方答案有部分错误,如果有发现错误,欢迎提出 一、判断题 1. HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力 正确 2. 用户首选项是关系型数…...
如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件
创建一个 Chrome 插件是一个有趣的项目,特别是当结合使用强大的工具如 React、TypeScript、TailwindCSS 和 Vite 时 在这篇文章中,我们将逐步引导完成整个过程,了解如何在 2024 年构建自己的 Chrome 插件。无论是经验丰富的开发者还是刚刚起…...
机器学习——Stacking
Stacking: 方法:训练多个模型(可以是强模型),然后将这些模型的预测结果作为新的特征,输入到下一层新的模型(可以是多个)中进行训练,从而得到最终的预测结果。 代表:Stacking本身并没…...
在HTML中添加图片
在HTML中添加图片,你需要使用<img>标签。这个标签用于在网页上嵌入图像。<img>是一个空元素,它只包含属性,并且没有闭合标签。要在<img>标签中指定要显示的图像,你需要使用src(source的缩写…...
R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
文章目录 介绍原理应用方向下载数据加载R包导入数据数据预处理数据描述数据切割标准化数据设置参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 支持向量机(Support Vector Machine,简称SVM)是一种…...
gdb调试使用记录
使用 GDB(GNU Debugger)进行问题排查是非常有效的。且可以通过core文件进行排查bug,core文件是程序异常崩溃的时候(段错误,非法指令等),系统自动生成的core文件。用户可以通过core文件配合gdb调试命令,调试…...
ESXi安装【真机和虚拟机】(超详细)
项目简介: ESXi(Elastic Sky X Integrated)是VMware公司开发的一种裸机虚拟化管理程序,允许用户在单一物理服务器上运行多个虚拟机(VM)。它直接安装在服务器硬件上,而不是操作系统之上ÿ…...
基于SpringBoot+Vue的高校门禁管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏:Java精选实战项目源码、Python精…...
【Linux-基础IO】C语言文件接口回顾 系统文件概念及接口
目录 一、C语言文件接口回顾 C语言基础知识 C中文件操作示例 二、系统文件概念及接口 重定向基本理解的回顾 文件的基本概念 系统调用接口 open read write close lseek 什么是当前路径 一、C语言文件接口回顾 引言:我们并不理解文件!从语…...
系统架构笔记-3-信息系统基础知识
知识要点 结构化方法:结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析、结构化设计、结构化程序设计三部分有机组合而成,精髓是自顶向下、逐…...
Linux下编程实现网络传送文件
本程序是在Linux下开发的,使用的是C语言,再结合Socket进行编程,分为客户端和服务器两个程序,即采用的是C/S架构,相应的源代码如下: 服务器端: #include <stdio.h> //#include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h&g…...
【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
前言: 前三篇如下: 【速成Redis】01 Redis简介及windows上如何安装redis-CSDN博客 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客 【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、…...
SQL Server 2022的数据类型
新书速览|SQL Server 2022从入门到精通:视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通(视频教学超值版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) 数据类…...
Linux基础3-基础工具4(git),冯诺依曼计算机体系结构
上篇文章:Linux基础3-基础工具3(make,makefile,gdb详解)-CSDN博客 本章重点: 1. git简易使用 2. 冯诺依曼计算机体系结构介绍 目录 一. git使用 1.1 什么是git? 1.2 git发展史 1.3 git创建仓库 1.4 git命令操作 二. 冯诺依…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
linux设备重启后时间与网络时间不同步怎么解决?
linux设备重启后时间与网络时间不同步怎么解决? 设备只要一重启,时间又错了/偏了,明明刚刚对时还是对的! 这在物联网、嵌入式开发环境特别常见,尤其是开发板、树莓派、rk3588 这类设备。 解决方法: 加硬件…...
