大家好!欢迎来到我的博客。 ?
介绍
今天,我们将深入了解高级 CSS 选择器的世界。这些选择器,如 :is()、:where()、:not() 和 :has(),由于其特殊性规则或浏览器支持问题,一开始可能看起来有点棘手,但它们是超级强大的工具创建更高效、更动态的 CSS。让我们一起探索这些选择器,了解它们的工作原理,查看它们的实际效果,并讨论一些其他的细微差别。
您将在本文中学到什么
理解每个选择器:分解 :is()、:where()、:not() 和 :has()。
浏览器支持:了解哪些浏览器支持这些选择器。
特异性见解:这些选择器如何影响 CSS 规则应用。
实际示例:真实世界的用例,展示这些选择器如何简化您的 CSS。
最佳实践:有效使用这些选择器的提示。
? :is() 选择器
什么是 :is() ?
:is() 伪类函数允许您将样式应用于多个选择器,而无需重复相同的属性。它对于对具有不同特异性的选择器进行分组特别有用。
示例:
<div> <pre class="brush:php;toolbar:false">:is(.alert.success, .alert.error, .alert.warning) { font-weight: bold; border: 1px solid; border-radius: 4px; } .alert.success { border-color: green; } .alert.error { border-color: red; } .alert.warning { border-color: orange; }
结果:所有警报类型均采用粗体和边框,颜色由其特定类别定义。
?提示:您可以复制粘贴 Codepen 上的所有示例,以查看实际结果。
? :where() 选择器
什么是 :where() ?
类似于 :is()、:where() 分组选择器,但它的特异性为 0,非常适合创建易于覆盖的样式。
示例:
<button> <pre class="brush:php;toolbar:false">/* Button styles with low specificity */ :where(button, input[type="button"], input[type="submit"]) { font-size: 1rem; padding: 0.5em 1em; background-color: #f0f0f0; border: none; cursor: pointer; } /* Specific override for primary buttons */ button.primary { background-color: #007BFF; color: white; }
结果:
? :not() 选择器
什么是 :不是() ?
:not() 伪类用于从选择中排除某些元素。它非常适合将样式应用于除特定元素或类之外的所有内容。
示例:
-
/* Style all list items except those marked as 'done' */ li:not(.done) { background-color: #f0f0f0; } /* Darken the text for completed items */ li.done { color: #888; }
结果:
? :has() 选择器
什么是 :has() ?
:has() 伪类允许您根据元素包含的内容设置元素的样式。这个选择器非常强大,但在撰写本文时浏览器支持有限。
示例:
<div> <pre class="brush:php;toolbar:false">:is(.alert.success, .alert.error, .alert.warning) { font-weight: bold; border: 1px solid; border-radius: 4px; } .alert.success { border-color: green; } .alert.error { border-color: red; } .alert.warning { border-color: orange; }
<button> <pre class="brush:php;toolbar:false">/* Button styles with low specificity */ :where(button, input[type="button"], input[type="submit"]) { font-size: 1rem; padding: 0.5em 1em; background-color: #f0f0f0; border: none; cursor: pointer; } /* Specific override for primary buttons */ button.primary { background-color: #007BFF; color: white; }
结果:
浏览器支持
- :is() 和 :where():现代浏览器通常支持这些,但请始终检查最新的兼容性数据。
- :not():得到广泛支持,但 :not() 内部的复杂选择器可能无法在旧版浏览器中工作。
- :has():仅限于最新版本的 Safari,并在其他浏览器中提供实验性支持。谨慎使用或使用polyfills以获得更广泛的兼容性。
具体考虑因素
- :is() 和 :where() 从它们包含的选择器继承最高的特异性,而 :where() 本身的特异性为零。
- :not() 的特殊性在于它包含的选择器。
- :has() 可能会导致复杂的特异性问题,因为它取决于其中的选择器,但它不会直接添加到特异性分数。
使用高级选择器的最佳实践
- 用于 DRY CSS:这些选择器减少重复,使您的 CSS 更易于维护。
- 考虑性能:复杂的选择器会影响性能,尤其是嵌套的选择器。
- 旧版浏览器的后备:使用 :has() 时,确保您有后备或使用 @supports 的功能查询。
- 避免过度使用:虽然功能强大,但不要使选择器过于复杂,因为可读性是关键。
实际应用
样式组件:使用 :is() 和 :where() 实现不同按钮类或表单元素之间的通用样式。
动态布局 : :has() 可用于自适应布局,其中某些元素的存在会改变父元素的样式。
响应式设计:将这些选择器与媒体查询相结合,以获得更加动态和上下文感知的设计。
结论
高级 CSS 选择器可以简化您的样式表,使其更干净、更高效。密切关注浏览器支持,尤其是 :has(),并明智地使用这些选择器来增强您的 CSS,而不牺牲可维护性。
祝您编码愉快,祝您的 CSS 具有所需的选择性! ?
?大家好,我是 Eleftheria,社区经理、 开发人员、公共演讲者和内容创建者。
?如果您喜欢这篇文章,请考虑分享。
? 所有链接 | X | 领英
以上是CSS 选择器:解锁现代网页设计的高级选择器的详细内容。更多信息请关注PHP中文网其他相关文章!

在这篇文章中,布莱克·莫里(Blackle Mori)向您展示了一些骇客,同时试图推动同位HTML支持的极限。如果您敢于使用这些,以免您也被标记为CSS罪犯。

具有CSS的自定义光标很棒,但是我们可以将JavaScript提升到一个新的水平。使用JavaScript,我们可以在光标状态之间过渡,将动态文本放置在光标中,应用复杂的动画并应用过滤器。

互动CSS动画和元素相互启动的元素在2025年似乎更合理。虽然不需要在CSS中实施乒乓球,但CSS的灵活性和力量的增加,可以怀疑Lee&Aver Lee&Aver Lee有一天将是一场

有关利用CSS背景滤波器属性来样式用户界面的提示和技巧。您将学习如何在多个元素之间进行背景过滤器,并将它们与其他CSS图形效果集成在一起以创建精心设计的设计。

好吧,事实证明,SVG的内置动画功能从未按计划进行弃用。当然,CSS和JavaScript具有承载负载的能力,但是很高兴知道Smil并没有像以前那样死在水中

是的,让#039;跳上文字包装:Safari Technology Preview In Pretty Landing!但是请注意,它与在铬浏览器中的工作方式不同。

此CSS-tricks更新了,重点介绍了年鉴,最近的播客出现,新的CSS计数器指南以及增加了几位新作者,这些新作者贡献了有价值的内容。

在大多数情况下,人们展示了@Apply的@Apply功能,其中包括Tailwind的单个property实用程序之一(会改变单个CSS声明)。当以这种方式展示时,@Apply听起来似乎很有希望。如此明显


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

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

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器