主要观点:CSS 世界近期很火热,各浏览器厂商和规范作者推出很多新特性,如:has
伪类。作者用:has
重构博客,发现其很实用,尤其在 CSS-in-JS 环境中。并介绍:has
的基本用法、浏览器支持情况、基于状态的样式应用、全局检测、无需 JavaScript 的暗模式等方面,还探讨了其局限性及在不同场景下的使用。
关键信息:
:has
以“自下而上”方式工作,可根据子元素样式父元素。- 四大浏览器从特定版本开始支持
:has
,目前约 92%支持。 - 可通过
@supports
进行特性检测,提供 fallback CSS。 - 利用
:has
可根据按钮状态为父元素添加轮廓,解决键盘导航问题。 - 可使用
:has
结合其他伪类实现各种条件样式,如自定义表单控制。 - 能将
:has
作为全局事件监听器,如控制模态框滚动。 - 可利用
:has
创建无需 JavaScript 的暗模式切换。 :has
可突破传统 CSS 选择器的限制,选择任意元素。- 虽
:has
强大,但在某些复杂场景下用 JavaScript 实现更简单。
重要细节: - 在不同示例中展示了
:has
在各种场景下的具体用法,如在“About Josh”页面的布局、自定义表单控制、模态框滚动控制等。 - 提到
@supports
的工作原理及如何使用最小有效:has
选择器。 - 列举了一些关于
:has
的资源。 - 说明
:has
的局限性及在实际应用中的权衡。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。