惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
罗磊的独立博客
IT之家
IT之家
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
J
Java Code Geeks
L
LangChain Blog
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
垃圾特性之CSS :heading伪类和:heading()函数 « 张鑫旭-鑫空...
张鑫旭,zhangxinxu · 2025-11-03 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=11894
本文可全文转载,但需要保留原作者、出处以及文中链接,AI抓取保留原文地址,任何网站均可摘要聚合,商用请联系授权。

一、了解:heading伪类

CSS又出了个名为:heading的伪类,用来匹配h1~h6元素的,也就是标题元素。

如果是其他标签元素,但是设置了role="heading"是不会匹配的。

:heading伪类的选择器优先级和类名一样。

二、关于:heading()函数

:heading()函数是用来匹配特定的标题元素,你可以理解为用来筛选标题元素的,语法如下所示:

:heading([ <An+B> [, <An+B>]* | even | odd ]) {
  /* ... */
}

举例示意说明:

先看even和odd两个关键字的匹配结果:

/* 匹配 <h1>、<h3> 和 <h5> 元素 */
:heading(odd)

* 匹配 <h2>、<h4> 和 <h6> 元素 */
:heading(even)

再看An+B参数的使用示意,其中n从0开始,A和B都是可以是负数的整数:

/* 匹配 <h3> 和 <h4> 元素 */
:heading(3, 4) {
  font-weight: 100;
}
/* 匹配从 <h3> 至 <h1>元素 */
:heading(-n + 3) {
  color: tomato;
}
/* 匹配 <h1> 和 <h4> 元素 */
:heading(3n + 1) {
  font-style: italic;
}
/* 匹配 <h5> 之后的标题元素 */
:heading(n + 5) {
  color: slateblue;
}

用文字描述即:

  • :heading(3,4)匹配<h3><h4>元素
  • :heading(-n+3)反向匹配标题元素,因此<h3><h2><h1>元素
  • :heading(3n+1)匹配从<h1>开始的每三个(3n)标题元素,因此这将包括<h1><h4>元素
  • :heading(n+5)匹配从<h5>开始的标题元素,并将包括<h6>

选择器优先级

:heading()函数选择器的优先级和类名一致。

三、点评:匪夷所思的蛋疼特性

说实话,我跟踪CSS这门语言十几年了,从没有像今天这么觉得蛋疼过。

以往出现什么CSS新特性,我总能见到其设计的目的,和解决问题的场景。

但是,但是……我今天也是小刀扎屁股——开了眼了,居然设计出了我一点也没看出有什么鸟用的CSS特性。

比方说这:heading伪类,就匹配h1-h6元素,请问,我下面这样书写,有什么问题:

h1, h2, h3, h4, h5, h6 {
  margin: 0;
}

我真的就在意少书写的那十几个字母:

还有那:heading(odd):heading(even),看起来很快,但实际上就是几把狗屎。

我这辈子就没有遇到过就需要单单匹配h1,h3,h5元素的场景,这种明显一辈子都不会用到的语法设计了干嘛?

无语哥

为了设计而设计,闲的没事找存在感吗?

CSS已经愈发无人问津了,还在搞这些边边角角,毫无意义的东西,这不是拖CSS发展的后退嘛。

气得没话说,浪费我学习的时间。

兼容性

Firefox预览版已经支持了此特性,其他浏览器还见不到影子:

:heading兼容性

我估计啊,Chrome和Safari以后也都不会支持这两个特性,实在是够烂的特性,无语至极。

算了,看看美女缓解下心情——慕沛灵仙子特写。

慕沛灵全身照

更新:

评论提醒了下,这个特性可能是用来匹配性质上是h1~h6的元素,而不是直接标签匹配。

😉😊😇
🥰😍😘

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=11894

(本篇完)