图解CSS:CSS的嵌套
对于众多 CSSer 来说,多年来一直希望在原生的 CSS 有类似变量,嵌套和函数等特性。虽然近些年,CSS 得到快速的发展,比如说,大家期望的 CSS 变量已经可以直接在 CSS中使用了,CSS也具备一些函数计算(甚至简单的逻辑判断)能力。今天要告诉大家的是,CSS 原生的嵌套很快就会出现在浏览器上。在今天这篇文章中就将和大家一起来聊聊 CSS 中原生的嵌套,以及如何使用它,在使用的过程需要怎样避免一些陷阱。

对于众多 CSSer 来说,多年来一直希望在原生的 CSS 有类似变量,嵌套和函数等特性。虽然近些年,CSS 得到快速的发展,比如说,大家期望的 CSS 变量已经可以直接在 CSS中使用了,CSS也具备一些函数计算(甚至简单的逻辑判断)能力。今天要告诉大家的是,CSS 原生的嵌套很快就会出现在浏览器上。在今天这篇文章中就将和大家一起来聊聊 CSS 中原生的嵌套,以及如何使用它,在使用的过程需要怎样避免一些陷阱。
对于大多数 Web 开发者(或 CSSer)而言,更为熟悉的是物理属性,比如width
、height
、top
、right
、bottom
、left
等。但我们在图解 CSS 系列中的《CSS逻辑属性》一章中和大家聊过 CSS 逻辑属性和逻辑值,以及逻辑属性与物理属性,逻辑值与物理值之间的对应关系。在网格布局的整个系列中,前面和大家一起讨论的都是在物理属性和ltr
(Left-To-Right)书写模式(或阅读模式)下的网格布局。接下来,在这部分将和大家一起探讨网格布局遇上逻辑属性和书写模式下的表现。
大约从 1998 年(还是 1999)年开始有了 Emojis(表情符号) 之后,Emojis 就风靡一时,在一些聊天工具和Web应用上也受到广泛的使用。也就是说,它不再局限于用在聊天工具用来交流,还在 Web 页面或应用上使用也越来越多,在一些组件上的使用也更频繁。就在最近,微软发布了全新的 3D 风格的表情符号(Emoji),这套 3D 风格的表情符号已经在 Flipgrid 上线,并将于今年晚些时候登录 Teams 和 Windows 系统,Yammer、Outlook 和其他平台将在明年推出。对于日常用户来说,表情符号是很好的。它们很有趣,也很容易使用。对于Web开发者而言,想在 HTML、CSS 和 JavaScript 中使用表情符号,情况还是有点不同。在这篇文章中,我们就和大家一起探讨表情符号在 Web 上的使用。
在开发电子商务网站或应用避免不了价格这个字段。事实上呢?很多电子商务网站的页面或应用的价格字段都没有提供一个较了的用户体验,或者说没有提供无障碍体验。而作为 Web 开发者,我们一些小小的改变就可以大大提升用户体验。接下来和大家一起聊聊,我们应该如何在自己的项目中为价格做出小小的改变来提高用户的体验。
在 CSS 中,早期给元素设置宽高比都是通过一些 CSS Hack 来完成,比如padding-top
(或 padding-bottom
)的值为元素宽高比的百分比。不过自 Chrome90、Firefox88 和 Safar Technology Preview 之后,可以使用原生的 CSS 宽高比属性 aspect-ratio
。在这一节中将和大家探讨宽高比(aspect-ratio
)在 CSS 网格中的运用。在开始之前,先简单的回忆一下 CSS 的 aspect-ratio
。
如果你熟悉 Flexbox 布局 的话,那么你应该知道 Flex 容器中对 Flex项对齐的方法。这些对齐属性最早只是运用于 Flex 容器和 Flex 项目上(也就是 Flexbox 布局中),后来随着 CSS 规范的变革,运用于 Flexbox 中的对齐方式的相关属性被移动一个新的规范中,即 盒模型对齐 Level 3(CSS Box Alignment Module Level 3) 的规范中,这个规范详细的定义了在不同的布局方式下如何处理对齐问题。目前该规范定义的对齐方式主要运用于 Flexbox 布局和 Grid 布局中。每种布局方式对盒模型对齐规范(CSS Box Alignment)的实现都略有差异,因为实际情况是每种布局方式都有各自的特点以及历史包袱,不能期望在所有的实现方式中都有完美一致的表现(对齐方式的表现)。而我们接下来主要和大家聊的是该规范在 CSS Grid 布局模式下的对齐方式。
这是一个很有意思的话题,仅从标题中我们可以得到两个关键词 完美 和 缩放。对于 Web 前端开发者而言,特别对于 UI 还原方面(天朝称“切图”,国外称“UI Developer”)更多追求的是像素级还原(即“Pixel-Perfect”),但随着更多的移动终端出现之后,特别更多的业务重心放到移动端之后,Web 开发者把更多的重心放在移动端。为此在业内出现了更多有关于移动端适配的方案,比如 Rem适配 和 VW适配 等。但这些都离我们所说的像素级还原目标越来越远。换句话说,如果我们既要(像素级还级)又要(完美缩放或适配),该怎么办呢?如果你对该话题感兴趣,那么接下来的内容值得你花一定时间阅读。
如果你阅读过早前分享过的《CSS媒体查询新特性》和《给网站添加暗黑模式》相关的文章,就可能想到了今天这篇文章大致和大家要聊的是些什么东西。事实上也的确如此,但或许和想象的略有差异,因为在这篇文章和大家聊的并不是 CSS 的媒体查询,也不是教大家怎么给网站添加暗黑模式的主题。如果是这样的话,就有点对不起大家了,大家也会觉得我在不断的炒冷饭。接下来要和大家聊的虽然也和 CSS 有关联,但对于很多同学来说,还是很新,很有意思的东西。感兴趣的同学请继续往下阅读。
既然 CSS Grid 布局已经来到我们的身边,我们开始在网上看到越来越多的类似于杂志式的 Web 布局。这并不是不可能的,如果你经常关注 Codepen 的话,你会发现在该平台上有很多类似杂志式的布局。这一切都是有原因的: 它们干净、可读、有吸引力,而且令人熟悉。甚至说,在未来的某一天(这个时间不会太久),你就会接到这样的需求,创建一个类似杂志的布局。 CSS Grid 的到来,让这一切已变得非常的容易,因为 CSS Grid 是一个非常强大的布局系统(通过前面的学习,或许你已经有感知了),可以用于创建复杂、独特的二维布局。而一个类似杂志式的布局有着其自身最大的特征,尤其是使用 CSS Grid 构建一个杂志式的布局更是如此:“将 Web 内容组织成一个结构良好的网格” 和“用重叠的网格项目来突破网格”。对于这两点,CSS Grid 都占有绝对的优势,在 CSS Grid 布局中,我们可以使用网格项目的重叠和定位,使用偏移(inset
,即top
、right
、bottom
和 left
)、负边距(margin
)和变换(transform
)来构构建。但是,在 CSS Grid 中,可以使用更有 逻辑性、 可读性 的属性和值来建立定位叠加的元素。接下来的内容,我们将围绕着这方面来展开。
在 CSS 网格中除了使用明确指定网格项目位置的属性之外,还可以使用grid-auto-flow
有不同模式来自动放置网格项目。到目前为止,我们所阐述的网格项目都是用不同的网格区域来放置网格项目,但网格布局中的网格项目有可能是会重叠在一起的。那么接下来的一节中,将和大家一起来探讨网格项目重叠和定位相关的知识。