搜索
首页web前端css教程CSS 选择器:解锁现代网页设计的高级选择器

大家好!欢迎来到我的博客。 ?

介绍

今天,我们将深入了解高级 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; }

结果:所有警报类型均采用粗体和边框,颜色由其特定类别定义。

CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

?提示:您可以复制粘贴 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;
}

结果:

CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

: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;
    }
    
    

    结果:

    CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

    :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;
    }
    

    结果:

    CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

    浏览器支持

    • :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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
丢失的CSS技巧cohost.org丢失的CSS技巧cohost.orgApr 25, 2025 am 09:51 AM

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

光标的下一个CSS样式光标的下一个CSS样式Apr 23, 2025 am 11:04 AM

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

世界碰撞:使用样式查询的钥匙帧碰撞检测世界碰撞:使用样式查询的钥匙帧碰撞检测Apr 23, 2025 am 10:42 AM

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

使用CSS背景过滤器进行UI效果使用CSS背景过滤器进行UI效果Apr 23, 2025 am 10:20 AM

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

微笑吗?微笑吗?Apr 23, 2025 am 09:57 AM

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

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

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

CSS-tricks编年史XLIIICSS-tricks编年史XLIIIApr 23, 2025 am 09:35 AM

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

tailwind的@Apply功能比听起来更好tailwind的@Apply功能比听起来更好Apr 23, 2025 am 09:23 AM

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

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脱衣机

Video Face Swap

Video Face Swap

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

热工具

安全考试浏览器

安全考试浏览器

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

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

螳螂BT

螳螂BT

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

VSCode Windows 64位 下载

VSCode Windows 64位 下载

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