【CSS in Depth 2 精译_049】7.2 CSS 响应式设计中的媒体查询原则(下):响应式列的添加

news2025/1/16 21:01:21

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

  • 【第七章 响应式设计】(概述)
    • 7.1 移动端优先设计原则(上篇)
      • 7.1.1 创建移动端菜单(下篇)
      • 7.1.2 给视口添加 meta 标签(下篇)
    • 7.2 媒体查询(上篇)
      • 7.2.1 深入理解媒体查询的类型(上篇)
      • 7.2.2 页面断点的添加(中篇)
      • 7.2.3 响应式列的添加(下篇) ✔️
    • 7.3 流式布局(待翻译 ⏳)

文章目录

    • 7.2.3 响应式列的添加 Adding responsive columns
      • 1 尽量精简媒体查询 Minimizing media queries
      • 2 断点的选择 Breakpoint selection

《CSS in Depth》新版封面

《CSS in Depth》新版封面

译者按
学习了媒体查询的核心概念及写法、并实现了中等屏标题栏和主图部分的样式替换,剩下的就是正文区的三列布局效果了。在 7.2 这一节的下篇中,作者对前一版的内容做了部分调整,新加入了近年来媒体查询的一些最佳实践,同时将容器查询的相关知识做了重新规划(放到了后续章节),以确保大家学到的都是业内最新、最及时的响应式布局知识。一起来用心体会吧。

7.2.3 响应式列的添加 Adding responsive columns

最后一步是要为中等屏幕断点引入多列布局。与前面几章构建多列布局的方式一样,只是需要将这些样式放到一个媒体查询里,以免影响到小于这个断点尺寸的屏幕设备。

之前写示例页面的 HTML 标记时,我们在需要作三列布局的元素上设置了一个样式类 main。现在是启用它的时候了,将如下代码更新到本地样式表:

代码清单 7.11 媒体查询中的三列布局

@media (min-width: 650px) {
  .main {
    /* 定义一个包含三列的网格布局 */
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    
    gap: 1.5em;
    
    /* 限制网格宽度并水平居中 */
    max-inline-size: 1400px;
    margin-inline: auto;
  }
}

然后尝试缩放浏览器的窗口大小,经过断点时会看到各列快速重新定位:宽度小于该断点时,这些元素没有特定样式,因此会按照常规文档流的行为特征自上而下进行排列;而当宽度超过该断点后,这些元素就会变成相应的弹性容器和弹性元素。

不少响应式设计最终都会遵循这样的思路:当设计要求元素并排放置时,多行并排只对大尺寸屏幕生效;在小尺寸屏中,则让各元素独占一行,填满整个屏幕宽度。这种方法适用于多列、文字旁的多张图片、或者在小尺寸屏下布局显得拥挤(cramped)的其他元素。

注意,代码清单 7.11 中的断点尺寸比之前设置的略宽,这里用的是 650px,因为三列布局在达到这个宽度时才开始显得拥挤。本例中,宽度不足 650px 时,每列就太窄了。设计时没必要在所有位置都恪守完全相同的断点尺寸。

Web 设计师 Brad Frost 整理了一份响应式页面布局的列表,可以访问 https://bradfrost.github.io/this-is-responsive/patterns.html 进行查看。响应式设计中的列非常灵活多变,比如设计成一宽一窄的组合、或者等宽列布局、双栏布局、三栏布局等等,不一而足。最终,这些列的布局都会使用与本章类似的方式实现,在列的具体组合或者列宽设置上略有不同。

1 尽量精简媒体查询 Minimizing media queries

样式表如果包含了很多大型媒体查询的样式块,可能会变得极其复杂。如果再来点 min-widthmax-width 这样的组合查询,情况只会更糟。当不同屏幕尺寸都对应了多个不同的样式规则时,要一次性记住所有这些内容估计有点困难。

因此,要尽可能地让这些媒体查询块保持轻量与简短。其中一种做法是,在媒体查询外部使用自定义属性,并在媒体查询内因地制宜地进行修改。例如,可以考虑利用自定义属性来定义一个普通的间距尺寸,然后在更大的断点中进行放大:

:root {
  --gap-size: 1rem;
}

@media (min-width: 560px) {
  :root {
    --gap-size: 1.5rem;
  }
}

上述代码中的自定义属性可以在整个页面中使用,而这个轻量的媒体查询块将根据它生效的位置作相应的调整。还有一种方法也能让媒体查询块保持简短,就是在媒体查询块的外围设置网格布局,然后根据屏幕尺寸在媒体查询中重新定义网格的行或者列。

在很多情况下,可能根本不需要媒体查询,自然地换行就能实现响应式效果。通过在 Flexbox 布局中使用 flex-wrap: wrap 并设置合适的 flex-basis 来实现响应式就是个绝佳的解决方案。同理,在网格布局中使用 auto-fit 或者 auto-fill 的网格列,以便在换行前设置好一行放入几个元素,也有异曲同工之妙。

2 断点的选择 Breakpoint selection

本章开头介绍了如何实现简单的响应式元素,以便熟悉媒体查询的相关用法。大多数时候,您可能会先用断点来处理多列布局的设计。建议多试几次,直到找出适合页面布局的断点尺寸。只要确保各列在所选的断点位置不要过窄就行了。

有时候会忍不住想要根据设备来选择断点:这款 iPhone14 宽多少像素、那个平板设备又是多宽多大……不要总盯着设备不放。市面上有成百上千种设备和屏幕分辨率,根本无法逐一测试。相反,应该选择适合设计的断点,这样不管在什么设备上渲染,都能有很好的表现。

多年来,媒体查询一直是响应式设计的基础,但还有另一种与之相关的工具,人们称它为 容器查询(container query。该工具可以根据容器元素的尺寸大小而非整个页面的大小来更改元素样式。我们将在第 10 章重点考察容器查询。



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

目前已完结的章节(可进入本专栏查看详情,连载期间完全免费):

  • 第一章 层叠、优先级与继承(已完结)
    • 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 本章小结
  • 第六章 定位与堆叠上下文(已完结)
    • 6.1 固定定位
      • 6.1.1 创建一个固定定位的模态对话框
      • 6.1.2 在模态对话框打开时防止屏幕滚动
      • 6.1.3 控制定位元素的大小
    • 6.2 绝对定位
      • 6.2.1 关闭按钮的绝对定位
      • 6.2.2 伪元素的定位问题
    • 6.3 相对定位
      • 6.3.1 创建下拉菜单(上)
      • 6.3.2 创建 CSS 三角形(下)
    • 6.4 堆叠上下文与 z-index
      • 6.4.1 理解渲染过程与堆叠顺序(上)
      • 6.4.2 用 z-index 控制堆叠顺序(上)
      • 6.4.3 深入理解堆叠上下文(下)
    • 6.5 粘性定位
    • 6.6 本章小结

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

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

相关文章

RabbitMQ 核心功能详解

引言 在现代分布式系统中,消息队列已经成为一种不可或缺的组件。它不仅能够实现应用之间的解耦,还能提高系统的灵活性和可扩展性。RabbitMQ 是一款基于 AMQP(Advanced Message Queuing Protocol)协议的消息中间件,以其…

香港举办AIHCIR 2024国际学术会议,领先人工智能、人机交互和机器人技术

第三届人工智能、人机交互和机器人国际学术会议 (AIHCIR 2024)将于2024年11月在中国香港举行,聚焦AI、人机交互与机器人领域,邀请知名学者演讲,促进学术交流。论文经评审后提交EI检索,投稿需全英文&#xf…

图解Redis 04 | Set数据类型的原理及应用场景

介绍 Redis 的 Set 类型是一个不允许重复元素的集合,元素存储的顺序不按照插入的顺序,因此属于无序集合。一个 Set 最多可以存储 2^32 - 1 个元素,这与数学中的集合概念类似。Set 类型不仅支持增、删、改、查等操作,还支持多个Se…

微软的 Drasi:一种轻量级的事件驱动编程方法

微软的开源数据变化处理平台有望提供一种全新的方式来构建和管理可产生持续事件流的云应用程序。 Microsoft Azure 孵化团队是微软超大规模云中比较有趣的组成部分之一。它介于传统软件开发团队和研究组织之间,致力于构建大规模分布式系统问题的解决方案。 这些解决…

使用拖拽生成活动海报(vue项目)

<template><div class"poster-editor"><div class"toolbar" v-if"edit 1"><div style"text-align: center;font-size: 14px;font-weight: 700;margin-bottom: 10px;">工具栏</div><div class"…

WPF组件的自定义模板和触发器全面解析

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软提供的一个用于构建桌面客户端应用程序的UI框架。其依赖于XAML&#xff08;Extensible Application Markup Language&#xff09;进行用户界面设计&#xff0c;提供了一套强大的控件和组件模型。在WPF开发中&…

C++ 的存储类型与新的 thread_local

1 C 的存储类型 1.1 存储周期&#xff08;Storage duration&#xff09; 存储周期表示一个变量的存储空间持续的时间&#xff0c;它应该与对象的语义生命周期一致&#xff08;或至少不小于对象的语义生命周期&#xff09;。C 98从 C 继承了三种存储周期&#xff0c;分别是静态…

【黑马点评】项目知识点及面经整理

【黑马点评】项目知识点及面经整理 1 短信登录&#xff08;Session&#xff0c;Redis&#xff0c;JWT验证&#xff09;1.1 JWT和Session的区别1.2 Session1.3 Redis1.3.1 基于Redis实现登录验证1.3.2 登录拦截 1.4 JWT1.4.1 JWT的有效验证1.4.2 JWT定义 2 热点数据缓存2.1 缓存…

区块链-智能合约Solidity编程

文章目录 一、ubuntu安装二、FISCO BCOS安装五、 WeBASE安装5.1 WeBASE简介5.2 节点前置服务搭建5.3 调用HelloWorld合约 七、Solidity极简入门7.1. 值类型7.2. 变量数据存储和作用域7.3. 函数7.4 控制流7.5 数组&映射7.6 结构体7.7 修饰符7.8 事件7.9 面向对象7.10 抽象合…

SoC芯片中Clock Gen和Reset Gen的时钟树综合

社区目前已经开设了下面列举的前四大数字后端实战课程&#xff0c;均为直播课&#xff0c;且均是小编本人亲自授课&#xff01;遇到项目问题&#xff0c;都可以远程一对一指导解决具体问题。小编本人是一线12年后端经验的数字后端工程师。想找一线IC后端技术专家亲自带你做后端…

Java Fork-Join框架学习

概述 Fork/Join是Java7提供的一个用于并行执行任务的框架&#xff0c;是一个把大任务分割成若干个小任务&#xff0c;最终汇总每个小任务结果后得到大任务结果的框架。Fork负责把一个大任务切分为若干并行执行的子任务&#xff0c;Join负责合并这些子任务的执行结果&#xff0…

Ubuntu系衍生版手动修改配置网卡的配置总结

一、Ubuntu系的IP地址配置文件的目录&#xff1a; sudo vim /etc/network/interfaces 二、以DHCP方式配置网卡&#xff1a; 在以上配置文件中添加以下两行&#xff1a; auto enp3s0 iface enp3s0 inet dhcp 三、为网卡配置静态IP地址&#xff1a; 在以上配置文件中添…

实验3,网络地址转换

实验3&#xff1a;网络地址转换 实验目的及要求&#xff1a; 通过实验&#xff0c;掌握NAT技术的工作原理&#xff0c;了解三种不同类型NAT技术的主要作用以及各自的主要应用环境。能够完成静态NAT和复用NAT技术的应用&#xff0c;并熟练掌握NAT技术相关的配置命令。 实验设…

el-date-picker选择时间后标准时间少1小时问题

问题 前端开发中发现Element的时间组件el-date-picker在选择选择部分时间后js对象的标准时间少1小时&#xff0c;如果选择的小时为0&#xff0c;会导致部分转换条件下结果少1天。 比如组件中选择的本地时间为&#xff1a; 1988-08-01 00:00:00 而js对象获取到是标准时间是&am…

ubuntu 安装kali命令补全功能

输入命令时&#xff0c;之前的命令会以阴影显示&#xff0c;按下右键或 Tab 键可以直接补全 安装zsh-autosuggestions sudo apt install zsh-autosuggestions编辑 ~/.zshrc环境变量 if [ -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]; then. /usr/share/zs…

【从零开始的LeetCode-算法】945. 使数组唯一的最小增量

给你一个整数数组 nums 。每次 move 操作将会选择任意一个满足 0 < i < nums.length 的下标 i&#xff0c;并将 nums[i] 递增 1。 返回使 nums 中的每个值都变成唯一的所需要的最少操作次数。 生成的测试用例保证答案在 32 位整数范围内。 示例 1&#xff1a; 输入&am…

【Hadoop】HDFS基本操作

参考&#xff1a;3.HDFS基本操作_哔哩哔哩_bilibili 创建目录 hadoop fs -mkdir -p /training/qiang查看当前根目录下文件 hadoop fs -ls /hadoop fs -ls /training/目录授权 hadoop fs -chmod -R 777 /training/qm777是最大权限&#xff0c;读写 4、2、1 上传文件 先创…

YZ系列工具之YZ09:VBA_Excel之读心术

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…

Python自动化脚本裁剪图片为1:1比例

一、创建输入文件夹&#xff08;in&#xff09;和输出文件夹&#xff08;out&#xff09;&#xff0c;将原始图片放在输入文件夹&#xff08;in&#xff09;里 二、 安装对应的Python库 pip install Pillow 三、编写自动化脚本代码 import os from PIL import Imagedef crop…

Axure RP电商系统商城PC+app+后台买家卖端高保真原型模板及元件库

AxureRP电商商城PCapp后台买家卖端高保真原型模板本套包含三份原型图素材 APP买家端原型简介&#xff1a; 包含了用户中心、会员成长、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 本模板由…