【CSS in Depth 2 精译_033】5.4 Grid 网格布局的显式网格与隐式网格(中)

当前内容所在位置(可进入专栏查看其他译好的章节内容)

  • 第一章 层叠、优先级与继承(已完结)
    • 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.4.1 添加变化 Adding variety

《CSS in Depth》新版封面

《CSS in Depth》新版封面

译者按
网格布局的强大背后,是众多细碎的配置属性与行为控制选项。想要彻底掌握网格布局,关键在于找到一个恰当的分类方法,对这些看似零散的知识点作系统性梳理,再结合实际案例重点理解,逐个击破。这也是本书一直以来被众多前端人员奉为【CSS 进阶神作】的其中一个重要原因——合理分类。一起来看看特写图片放大效果的实现过程吧。

5.4.1 添加变化 Adding variety

接下来,让作品墙中的特写图片(如本例中的小鸟和天鹅)放大些来增强视觉趣味性。放大前的每个网格元素都各自占据了 1 × 1 的区域。然后将特写图片的尺寸增加到 2 × 2,方法是通过样式类 featured 选中特写元素,并让它们在水平和垂直方向上都占据两个网格轨道的大小。

问题来了:由于元素按从左至右的顺序排列,放大某些网格元素将导致网格中出现空白区域,如图 5.14 所示。小鸟图之前在第三个网格元素内,但因为尺寸变大了,老鹰图的右侧单元格已经容纳不下这张图片,因此只能掉到下一行的网格轨道。

图 5.14 增加某些网格元素的尺寸大小会导致布局中出现无法容纳大元素的空白区域

图 5.14 增加某些网格元素的尺寸大小会导致布局中出现无法容纳大元素的空白区域

当不主动设置网格元素的位置时,元素会按照默认的布局算法(placement algorithm)自行定位。默认情况下,布局算法会尝试按元素在 HTML 标记中的顺序逐列、逐行摆放。当一个元素在某一行放不下时(即该元素占据了太多网格轨道时),布局算法会将其移动到下一行,寻找足够大的空间来安置它。于是本例中的小鸟图就被挪到了下方第二行,放到了老鹰图的下面。

网格布局模块(Grid Layout Module)还提供了另一个属性 grid-auto-flow 来控制布局算法的行为。它的初始值(initial value)为 row,效果就是上面截图看到的样子。如果设置为 column,布局算法就会将元素优先放在网格列中,并且只有等这一列也放不下时,才会移动到该行的下一列;直到这一行最后一列也不行时,才会考虑换到下一行,以此类推。

该属性还可以添加关键字 dense(如 grid-auto-flow: column dense)。这样,布局算法就能紧凑地填满网格里的空白,尽管会打乱某些网格元素的顺序。加上 dense 后,较小的图片元素就会“回填”到由大图片造成的空白区域,效果如图 5.15 所示:

图 5.15 grid-auto-flow 属性添加关键字 dense 后,小网格元素就能回填网格的空白区域

图 5.15 grid-auto-flow 属性添加关键字 dense 后,小网格元素就能回填网格的空白区域

让布局算法的自主流动(auto-flow)紧凑起来之后(即添加了 dense),放置大图片时留下的空白区域将由小图片优先补空。此时源码顺序还是不变(猴、老鹰、小鸟、熊),但最后那张熊图就被挪到了小鸟图前面,填补了第一行的空缺。

按照代码清单 5.10 更新样式表。改样式放大了特写图片,使其在水平和垂直方向均占据两个网格轨道,并启用了紧凑的自主流动模式。

代码清单 5.10 放大特写图片的样式代码

.portfolio {display: grid;grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));grid-auto-rows: 1fr;gap: 1em;grid-auto-flow: dense; /* 启用紧凑的网格布局算法 */
}/* 放大特写图片,使其在水平和垂直方向上各占据两个网格轨道的大小 */
.portfolio .featured {grid-row: span 2;grid-column: span 2;
}

这段样式代码(第 6 行)使用了 grid-auto-flow: dense,相当于 grid-auto-flow: row dense(前者隐含了 row 这个初始值)。然后指定特写图片的尺寸为:在水平和垂直方向上各占据两个网格轨道大小。注意,本例中只用了 span 关键字,并没有具体指明什么元素该放到什么轨道,这样布局算法就会将网格元素放到它认为合适的位置。

实际屏幕看到的效果可能跟图 5.12 不完全一致,因为本例用 auto-fill 来确定垂直网格轨道的数量,所以屏幕越宽,可以容纳的轨道数就越多;屏幕越窄,相应的轨道数就越少。我截图时的宽度约为 1000px,能装下四个网格轨道。适当调整浏览器的窗口大小,就能看到网格自动生成了多少个轨道来填充可用空间。

需要注意的是,布局算法设置为紧凑型自主流动后,可能会导致元素显示的顺序跟 HTML 里的源码顺序不一致。当用户借助键盘(如 Tab 健)或屏幕阅读工具来浏览网页时,这些辅助工具会以 HTML 中的源码顺序而非屏幕渲染顺序来浏览网页,这样可能会让用户感到困惑。



关于《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 版高分译文专栏,全网首发,精译精校,持续更新,计划今年内完成全书翻译,敬请期待!!!

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

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

相关文章

pytorch的动态计算图机制

pytorch的动态计算图机制 一,动态计算图简介 Pytorch的计算图由节点和边组成,节点表示张量或者Function,边表示张量和Function之间的依赖关系。 Pytorch中的计算图是动态图。这里的动态主要有两重含义。 第一层含义是:计算图的…

Swin Transformer—使用平移窗口的分层视觉转换器结构

Swin Transformer解读 论文题目:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. 官方代码地址:https://github.com/microsoft/Swin-Transformer. 引言与概括 ICCV2021的最佳论文作者是来自微软亚洲研究院。 SwinTransforme…

基础实践:使用JQuery Ajax调用Servlet

前言 本博客介绍最简单的JQuery(原生JS的封装库)使用Ajax发送请求,并通过对应的servlet响应数据,并在页面显示,并且servlet响应的数据来自MySQL数据库。 实现需求:在前端页面的输入框中输入要注册的用户名&…

依赖库查看工具Dependencies

依赖库查看工具:Dependencies Dependencies 是一款 Windows 平台下的静态分析工具,用来分析可执行文件(EXE、DLL 等)所依赖的动态链接库(DLL)。它可以帮助开发者和系统管理员快速查找程序在运行时可能缺少的…

【机器学习】--- 决策树与随机森林

文章目录 决策树与随机森林的改进:全面解析与深度优化目录1. 决策树的基本原理2. 决策树的缺陷及改进方法2.1 剪枝技术2.2 树的深度控制2.3 特征选择的优化 3. 随机森林的基本原理4. 随机森林的缺陷及改进方法4.1 特征重要性改进4.2 树的集成方法优化4.3 随机森林的…

论文浅尝 | KAM-CoT: 利用知识图谱进行知识增强的多模态链式推理(AAAI2024)

笔记整理:沈小力,东南大学硕士,研究方向为多模态大预言模型、知识图谱 论文链接:https://arxiv.org/abs/2401.12863 发表会议:AAAI2024 1. 动机 本文探索了知识图谱在扩展大语言模型的多模态能力的效果,提出…

在jupyter notebook中取消代理服务器的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

使用GPU 加速 Polars:高效解决大规模数据问题

Polars 最近新开发了一个可以支持 GPU 加速计算的执行引擎。这个引擎可以对超过 100GB 的数据进行交互式操作能。本文将详细讨论 Polars 中DF的概念、GPU 加速如何与 Polars DF协同工作,以及使用新的 CUDA 驱动执行引擎可能带来的性能提升。 Polars 核心概念 Polar…

go libreoffice word 转pdf

一、main.go 关键代码 完整代码 package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""os/exec""path/filepath" ) import _ "github.com/go-sql-driver/mysql"import &q…

多态与绑定例题

答案: B D C 知识点: 多态是相同方法不同的表现,分为重写和重载 重写体现在父类与子类不同表现,主要表现为子类重现父类的方法 重载体现在同一个类中的不同表现 绑定分为动态绑定和静态绑定 动态绑定是在运行时 静态绑定是…

java23发布啦

2024年9月java23发布啦!!! JDK 23 提供了12 项增强功能,这些功能足以保证其自己的JDK 增强提案 - JEP ,其中包括 8 项预览功能和 1 项孵化器功能。它们涵盖了对 Java 语言、API、性能和 JDK 中包含的工具的改进。除了 Java 平台上…

《独孤九剑》游戏源码(客户端+服务端+数据库+游戏全套源码)大小2.38G

《独孤九剑》游戏源码(客户端服务端数据库游戏全套源码)大小2.38G ​ 下载地址: 通过网盘分享的文件:【源码】《独孤九剑》游戏源码(客户端服务端数据库游戏全套源码)大小2.38G 链接: https://pan.baidu.co…

走在时代前沿:让ChatGPT成为你的职场超级助手

在当今快节奏的工作环境中,时间和效率是宝贵的资源。人工智能(AI),尤其是自然语言处理技术的进步,为我们提供了强大的工具来优化工作流程。ChatGPT(Generative Pre-trained Transformer)就是其中…

计算机毕业设计之:基基于微信小程序的轻食减脂平台的设计与实现(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

PostgreSQL技术内幕10:PostgreSQL事务原理解析-日志模块介绍

文章目录 0.简介1.PG日志介绍2.事务日志介绍3.WAL分析3.1 WAL概述3.2 WAL设计考虑3.2.1 存储格式3.2.2 实现方式3.2.3 数据完整性校验3.3 check ponit 4.事务提交日志(CLOG)4.1 clog存储使用介绍4.2 slru缓冲池并发控制 0.简介 本文将延续上一篇文章内容…

59.【C语言】内存函数(memmove函数)

目录 2.memove函数 *简单使用 部分翻译 *模拟实现 方案1 方案2 1.有重叠 dest在src左侧 dest在src右侧 2.无重叠 代码 2.memove函数 *简单使用 memove:memory move cplusplus的介绍 点我跳转 对比第59篇的memcpy函数 对比memmcpy函数的介绍如下区别: 部分翻译 m…

金刚石切削工具学习笔记分享

CVD钻石-合成单晶钻石之一 金刚石具有极高的硬度和耐磨性、较低的摩擦系数、较高的弹性模量、较高的热导率、较低的热膨胀系数、与有色金属的亲和力较小等优点,是目前最硬的工具材料,主要分为单晶金刚石和聚晶金刚石两大类。单晶金刚石又分为天然单晶金…

常用卫星学习

文章目录 Landsat-8 Landsat-8 由一台操作陆地成像仪 (OLI) 和一台热红外传感器 (TIRS)的卫星,OLI 提供 9 个波段,覆盖 0.43–2.29 μm 的波长,其中全色波段(一般指0.5μm到0.75μm左…

CentOS Stream 9部署MariaDB

1、更新系统软件包 sudo dnf update 2、安装MariaDB软件包(替代mysql) sudo dnf install mariadb-server 3、安装MariaDB服务 sudo systemctl enable --now mariadb 4、检查MariaDB服务状态 sudo systemctl status mariadb 5、配置MariaDB安全性 sudo my…

锐捷 睿易路由器存在RCE漏洞

漏洞描述 锐捷Ruijie路由器命令执行漏 漏洞复现 FOFA: icon_hash"-399311436" 点击左下角的“网络诊断”,在“Tracert检测”的“地址”框中,输入127.0.0.1;ls,接着点击“开始检测”,会在检测框中回显命令执行结果。…