搜索
首页科技周边IT业界3件事(几乎)没人知道CSS

CSS 技巧测试:你真的了解 CSS 吗?

要点回顾

  • 设置双倍行高的最佳方法是使用无单位数字(例如 2),这样具有不同字体大小的子元素可以继承正确的行高比率。
  • 尽管普遍误解认为 z-index 本身会导致重叠,但实际上可以通过 margin 属性(特别是设置负边距)使 HTML 元素重叠。
  • 伪元素和伪类是 CSS 中截然不同的特性:伪类在特定条件下应用于实际的 HTML 元素,而伪元素允许对文档中并非实际 HTML 元素的部分进行样式设置。
  • W3C 试图在 CSS3 选择器规范中区分伪元素和伪类,方法是为伪元素选择器使用两个冒号(::first-line),为伪类使用一个冒号(:hover),但为了向后兼容性,浏览器必须同时支持这两种版本。

你认为自己精通 CSS 吗?如果过去六个月我在网上提供的免费 CSS 测试结果有任何参考意义的话,许多经验丰富的开发者对 CSS 的了解程度并没有他们想象的那么好。在迄今为止参加测试的 3000 多人中,平均得分仅为 55%。

但是,平均值本身并没有那么有趣。我更想知道人们错在哪里。为了撰写这篇文章,我分析了数据,并重点关注了人们得分特别低的三个问题。我将逐一讲解每个问题,向您展示大多数人选择的答案,并解释正确的答案。

可以肯定地说,如果你在阅读完这篇文章后自己参加测试,你将拥有不公平的优势!

问题 1:设置 line-height 的最佳方法

第一个问题对于定期处理文本样式的人来说应该很容易:

你希望网站上的文本默认情况下为双倍行高。以下哪个 line-height 值是实现此目的的最佳方法?

  • 200%
  • 2em
  • 2
  • double

有四个答案可供选择,你预计有 25% 的人会靠运气答对,但只有 31% 的人答对了这个问题!花点时间自己选择一个答案,然后继续阅读。

首先,double 是个干扰项。line-height 唯一接受的关键字值是 normal。我很高兴地说,只有 9% 的人选择了这个选项。其余三个答案都很受欢迎。

大多数人选择的答案是 2em(39% 的人选择了这个答案)。事实上,2em 当然会为应用它的元素提供双倍行高;但 200% 也会,而只有 21% 的人喜欢这个答案!要么 em 比百分比更流行,要么人们并不真正理解它们。

然而,正确的答案是 2

很久以前,当我第一次学习 CSS 时,我就被灌输了这个教训。始终将 line-height 指定为无单位数字;这样,指定不同字体大小的子元素将继承该数字,而不是固定的行高。

假设页面具有 12pt 的默认字体大小,但它还包含一个字体大小为 24pt 的标题。如果你将正文的 line-height 设置为 2em(或 200%),那么你将在整个文档中获得恰好 24pt(正文字体大小的两倍)的行高——即使在该标题中也是如此。因此,标题将是单倍行高,而不是双倍行高!

相反,将 line-height 设置为 2 会告诉浏览器即使字体大小发生变化也要保持字体大小/行高比率。正文的行高将为 24pt,但对于标题的 24pt 字体,行高将自动增加到 48pt。

问题 2:如何使元素重叠

这个问题有点棘手。它需要一些 CSS 布局经常需要的“技巧”经验:

以下哪个 CSS 属性本身就可以导致 HTML 元素重叠?

  • z-index
  • margin
  • overflow
  • background

选好答案了吗?好的,让我们深入探讨。

再一次,有一个很容易排除的选项:background。除了 2% 的测试者之外,所有人都避开了它,因为他们知道它控制背景颜色和图像。

不幸的是,大多数人直接选择了 z-index。高达 46% 的人选择了这个答案。我猜这是因为没有人真正理解 z-index 的工作原理。事实上,单独设置 z-index 属性没有任何效果;你还需要设置元素的 position 属性才能使 z-index 发挥作用。简而言之,z-index 允许你控制确实重叠的元素的堆叠顺序,但它们首先需要重叠。MDN 有一篇非常好的文章,名为“理解 CSS z-index”,值得一读,了解更多详情。

如果你曾经使用过 overflow,那么它也应该很容易排除。它控制不适合大小框的内容的行为:是否被截断,是否流出框的边缘等。同样,这取决于框的大小是否通过其他属性来约束;它本身不会导致重叠。尽管如此,仍有 22% 的人认为它可能会。

这让我们只剩下 margin,这是正确的答案。只有 30% 的人答对了。你可能会好奇,一个在元素之间创建距离的属性怎么可能导致它们重叠。如果你做过任何实际的 CSS 布局,答案应该很明显:负边距会使元素重叠。

为了演示这一点,创建一个包含两个 div 元素的页面。将第二个 div 的 margin-top 设置为负值,例如 -100px。砰!第二个 div 现在覆盖了第一个 div 的底部一百像素。

在实践中,你几乎不会故意像这样重叠块,但负边距对于将 HTML 元素挤压到它们通常不会去的地方非常有用。我经常使用它们将左浮动或右浮动的元素推入其父框的填充区域。

3 Things (Almost) No One Knows About CSS

对于网页设计史爱好者来说,2005 年使用负边距重叠元素使得所谓的 One True Layout(以及后来的 Holy Grail 布局)等三列页面布局成为可能。

问题 3:伪元素与伪类

我承认,最后一个问题有点卑鄙。但只有 23% 的测试者能够正确回答这个问题(这比运气还差!),它显然触及了一个令人困惑的点:

以下哪个效果最适合使用伪元素来实现?

  • 当用户将鼠标悬停在超链接上时,为其添加阴影。
  • 当选中复选框时,以不同的颜色显示复选框的标签。
  • 为表格的奇数行和偶数行赋予不同的背景颜色。
  • 在灵活的页面布局中,将段落的首行显示为粗体文本。

这三个选择都是使用伪类实现的效果;只有一个涉及伪元素。你能区分它们吗?

伪类是实际 HTML 元素可能处于的特定状态。可以把它想象成一个虚拟类,浏览器在特定条件下会自动将其应用于元素。

伪元素是文档的一部分,即使它不是实际的 HTML 元素,CSS 也允许你对其进行样式设置。它就像一个虚拟 HTML 元素——即使它周围没有实际的 HTML 标签,你也可以对其进行样式设置。

考虑到这种区别,让我们来看一下这些选项:

当用户将鼠标悬停在超链接上时,为其添加阴影。

超链接是一个实际的 HTML 元素。仅在特定情况下(当鼠标悬停在其上时)对其应用样式意味着我们正在使用伪类。在这种情况下,你将使用的伪类是 :hover

22% 的测试者认为这是一个伪元素。

当选中复选框时,以不同的颜色显示复选框的标签。

同样,标签是一个实际的 HTML 元素,而不是虚拟元素。当选中复选框时,浏览器会将 :checked 伪类应用于它。然后,你可以在你的选择器中使用它来设置复选框的样式,甚至可以设置它旁边的标签的样式(例如,使用相邻同胞选择器 )。

20% 的测试者认为这是一个伪元素。

为表格的奇数行和偶数行赋予不同的背景颜色。

这是真正愚弄人们的一个问题,但再一次,我们谈论的是对实际 HTML 元素(在本例中为 tr 元素)应用样式。tr 在其父元素的子元素集合中是奇数还是偶数,这只是你可以用伪类匹配的另一种情况。

在这种情况下,伪类是 :nth-child(even)(或 :nth-child(2n))用于偶数元素,:nth-child(odd)(或 :nth-child(2n 1))用于奇数元素。

我猜这仅仅是因为 :nth-child 和伪元素通常听起来都像是非常晦涩的 CSS 特性,但有 36% 的测试者选择了这个作为伪元素。

在灵活的页面布局中,将段落的首行显示为粗体文本。

当然,这是正确的答案。到目前为止,希望区别已经很清楚了。在灵活的页面布局中,你无法查看页面的 HTML 代码并说“那里的元素只包含段落文本的第一行”。浏览器根据段落的宽度进行换行,这是你在灵活的页面布局中无法控制的。

:first-line 是允许你对块中的第一行文本应用样式的伪元素,无论该第一行换行到第二行的位置在哪里。

如果你在想“好吧,这听起来很有道理,但是,没有人知道伪元素和伪类的区别”,那么 W3C 同意你的看法。在 CSS3 选择器规范中,为了区分两者,它更改了语法,以便伪元素选择器使用两个冒号(::first-line),而伪类仍然使用一个冒号(:hover)。当然,为了向后兼容性,浏览器必须同时支持这两种版本。

所以是的,就像我说的那样:卑鄙的问题。但是,嘿,如果你像我一样是 CSS 极客,我想你会知道你的伪元素和伪类的区别。

你的得分如何?

就是这样:测试中的三个难题。如果你自信地回答了其中一个问题,那么你做得不错。答对了两个?还不错。如果你答对了所有三个,我很想听听你的想法!尤其是在我已经给出这些答案之后,我真的很需要一些更棘手的 CSS 问题的想法。请在评论中发布它们!

如果你喜欢这些问题,也许你愿意尝试一下其余的测试。请放心,其他问题比这些问题容易得多……大部分!

以上是3件事(几乎)没人知道CSS的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
安卓首家接入DeepSeek背后:看见女性力量安卓首家接入DeepSeek背后:看见女性力量Mar 12, 2025 pm 12:27 PM

中国女性科技力量在AI领域的崛起:荣耀与DeepSeek合作背后的女性故事女性在科技领域的贡献日益显着。中国科技部数据显示,女性科技工作者数量庞大,在AI算法开发中展现出独特的社会价值敏感性。本文将聚焦荣耀手机,探究其率先接入DeepSeek大模型背后的女性团队力量,展现她们如何推动科技进步,重塑科技发展价值坐标系。 2024年2月8日,荣耀正式上线DeepSeek-R1满血版大模型,成为安卓阵营首家接入DeepSeek的厂商,引发用户热烈反响。这一成功背后,女性团队成员在产品决策、技术攻坚和用户

DeepSeek'惊人”盈利:理论利润率高达545%!DeepSeek'惊人”盈利:理论利润率高达545%!Mar 12, 2025 pm 12:21 PM

DeepSeek公司在知乎发布技术文章,详细介绍了其DeepSeek-V3/R1推理系统,并首次公开关键财务数据,引发业界关注。文章显示,该系统单日成本利润率高达545%,创下全球AI大模型盈利新高。DeepSeek的低成本策略使其在市场竞争中占据优势。其模型训练成本仅为同类产品的1%-5%,V3模型训练成本仅为557.6万美元,远低于竞争对手。同时,R1的API定价仅为OpenAIo3-mini的1/7至1/2。这些数据证明了DeepSeek技术路线的商业可行性,也为AI大模型的高效盈利树立了

2025年最佳10个最佳免费反向链接检查器工具2025年最佳10个最佳免费反向链接检查器工具Mar 21, 2025 am 08:28 AM

网站建设只是第一步:SEO与反向链接的重要性 建立网站只是将其转化为宝贵营销资产的第一步。您需要进行SEO优化,以提高网站在搜索引擎中的可见度,吸引潜在客户。反向链接是提升网站排名的关键,它向谷歌和其他搜索引擎表明您的网站权威性和可信度。 并非所有反向链接都有利:识别并避免有害链接 并非所有反向链接都有益。有害链接会损害您的排名。优秀的免费反向链接检查工具可以监控链接到您网站的来源,并提醒您注意有害链接。此外,您还可以分析竞争对手的链接策略,从中学习借鉴。 免费反向链接检查工具:您的SEO情报员

美的推出首款DeepSeek空调:AI语音交互 可实现40万 条指令!美的推出首款DeepSeek空调:AI语音交互 可实现40万 条指令!Mar 12, 2025 pm 12:18 PM

美的即将发布搭载DeepSeek大模型的首款空调——美的鲜净感空气机T6,发布会定于3月1日下午1点30分举行。这款空调配备先进的空气智驾系统,可根据环境智能调节温度、湿度和风速等参数。更重要的是,它集成了DeepSeek大模型,支持超过40万条AI语音指令。美的此举引发业界热议,尤其关注白电产品与大模型结合的意义。不同于传统空调简单的温度设定,美的鲜净感空气机T6能够理解更复杂、更模糊的指令,并根据家庭环境智能调节湿度等,显着提升用户体验。

百度又一国民产品接入DeepSeek,是想开了还是跟风?百度又一国民产品接入DeepSeek,是想开了还是跟风?Mar 12, 2025 pm 01:48 PM

DeepSeek-R1赋能百度文库与网盘:深度思考与行动的完美融合短短一个月内,DeepSeek-R1已迅速融入众多平台。百度凭借大胆的战略布局,将DeepSeek作为第三方模型伙伴,整合进自身生态系统,这标志着其“大模型 搜索”生态战略的重大进展。百度搜索和文心智能体平台率先接入DeepSeek及文心大模型的深度搜索功能,为用户提供免费的AI搜索体验。同时,“百度一下,你就知道”的经典slogan回归,新版百度APP也整合了文心大模型和DeepSeek的能力,推出“AI搜索”、“全网信息提炼”

及时的网络开发工程及时的网络开发工程Mar 09, 2025 am 08:27 AM

AI及时工程代码生成:开发人员指南 代码开发的景观有望进行重大转变。 掌握大型语言模型(LLM)和及时工程对于未来几年对开发人员至关重要。 Th

使用GO构建网络漏洞扫描仪使用GO构建网络漏洞扫描仪Apr 01, 2025 am 08:27 AM

此基于GO的网络漏洞扫描仪有效地确定了潜在的安全弱点。 它利用了GO的并发功能的速度功能,包括服务检测和漏洞匹配。让我们探索它的能力和道德

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。