浅析CSS :is() 和 :where() 即将出现在浏览器中

yizhihongxing

概述

在CSS4 Selector Level 4 规范中, :is() 和 :where() 伪类将被正式引入到浏览器中。这两个伪类都可以用来简化CSS选择器的书写,提高选择器的复用性。其中,:is() 和 :where() 功能类似,但也有细微差异。

:is() 伪类

对于复杂的选择器,我们经常需要嵌套或者使用逗号分隔不同的选择器。 :is() 可以让我们使用更简洁的方式书写这样的选择器。例如,下面的选择器:

div p,
div span,
div a {
  color: red;
}

可以简化为:

div :is(p, span, a) {
  color: red;
}

这样可以有效减少代码量,提高可读性。:is() 还支持嵌套使用,例如:

:is(div, article) > :is(h1, h2, h3) {
  color: blue;
}

这样可以选中 div.article 和 article 标签的 h1、h2、h3 标签,其它选择器同理。

:where() 伪类

:where() 功能与 :is() 相似,不过它允许我们在选择器中使用普通的语法结构,而非只能使用逗号分隔的方式。例如,下面的选择器:

div p b,
div ul li b,
div ol li b {
  color: red;
}

可以简化为:

div :where(p, ul li, ol li) b {
  color: red;
}

其中,普通的语法结构“ul li”、“ol li”都被包含在了 :where() 伪类中。:where() 可以用于任何复杂选择器的简化,例如:

:where(.red, .blue):not(.green) h1 a {
  color: red;
  text-decoration: none;
}

这样可以选中具有“red”或“blue”类的 h1 标签中的 a 标签,且不含有“green”类。

注意事项

虽然 :is() 和 :where() 看起来非常有用,但是目前这两个伪类还未被所有浏览器所支持,需要注意浏览器的版本兼容性。同时,需要注意书写格式, :is() 和 :where() 必须放在伪类列表的最后。例如:

h1:where(:first-child, :last-child):not(.title) {
  color: red;
}

示例

下面是一个选择器的示例,展示了如何使用 :is() 和 :where() 来简化选择器。

div :is(p, ul li, ol li):where(:first-child, :last-child) b {
  color: red;
}

这样可以选中 div 中的 p、ul li、ol li 标签中的第一个或者最后一个 b 标签,并将其颜色设置为红色。

另一个示例:

:is(article, div) :where(.title, h1) a {
  color: blue;
}

这样可以选中 article 和 div 标签中具有“title”类或者为 h1 标签的 a 标签,并将其颜色设置为蓝色。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅析CSS :is() 和 :where() 即将出现在浏览器中 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • UI自动化定位常用实现方法代码示例

    下面是关于“UI自动化定位常用实现方法代码示例”的完整攻略: 理解UI自动化定位 在进行UI自动化测试时,定位元素是非常关键的一步,因为测试脚本需要通过定位元素才能进行后续的操作和断言。常用的元素定位方式包括:id、name、class、tag、xpath等。在实现元素定位时,还需要考虑定位的准确性、稳定性和代码的可维护性。 常用的UI自动化定位方法 1. …

    css 2023年6月9日
    00
  • 网页布局中CSS样式无效的十个重要原因详解

    下面就来讲解 “网页布局中CSS样式无效的十个重要原因详解” 的完整攻略。 1. CSS选择器不准确 在 CSS 中,选择器是用来选择需要添加样式的元素。但是,如果选择器不准确,就可能导致样式无法生效,例如: h1 { color: red; } h2 { color: red; } 上面的代码中,两条选择器分别选择了 h1 和 h2 元素,并给它们设置了相…

    css 2023年6月9日
    00
  • JS中解决谷歌浏览器记住密码输入框颜色改变功能

    在JS中,当用户在谷歌浏览器中输入用户名和密码并允许浏览器记住密码后,下次用户访问该网站时,浏览器会自动填充该用户的用户名和密码。但是,有时会遇到这样一个问题:输入框颜色改变,此时用户很难区分哪些输入框已经被填充。 解决这个问题的方法是在页面加载完成后,使用JavaScript检测所有的输入框是否有缓存,如果有,则将其背景色更改为不同于其他输入框的颜色。以下…

    css 2023年6月9日
    00
  • CSS 即将支持嵌套,SASS/LESS 等预处理器该何去何从

    CSS 即将支持嵌套,SASS/LESS 等预处理器该何去何从 在 CSS 3 中,嵌套选择器是一种非常有用的选择器,可以让开发者更加方便地编写 CSS 样式。然而,CSS 3 中的嵌套选择器只能嵌套一层,对于复杂的嵌套结构,仍然需要使用类名或 ID 来实现。近期,CSS 工作组提出了一个新的 CSS 规范,即 CSS Nesting,该规范将支持多层嵌套选…

    css 2023年5月18日
    00
  • jquery实现树形菜单完整代码

    首先介绍一下jquery实现树形菜单的原理和步骤: 在html中准备好容器,用于放置树形菜单; 通过ajax请求或静态数据,获取树形结构的数据,可以是数组形式或json格式; 遍历数据,根据层级关系,生成菜单的html代码,包括ul、li等元素; 监听菜单项的点击事件,收缩/展开子菜单,并设置样式; 将生成的菜单html代码插入到容器中。 下面展示完整的jq…

    css 2023年6月9日
    00
  • 你所不知道的 CSS 动画技巧与细节

    你所不知道的 CSS 动画技巧与细节 1. 利用 transform 属性创建更流畅的动画效果 在 CSS 动画中,transform 属性可以帮助我们创建平移、旋转和缩放效果。不过在使用时,我们还可以借助它的一些细节来让动画更加流畅。 使用 transform: translateZ(0) 增加硬件加速 在移动设备上,我们经常会遇到动画卡顿的问题。这时可以…

    css 2023年6月10日
    00
  • jQuery实现每隔一段时间自动更换样式的方法分析

    下面我就来详细讲解一下“jQuery实现每隔一段时间自动更换样式的方法分析”的完整攻略。 一、需求分析 我们需要在页面中,每隔一段时间自动更换样式,这个需求需要使用JavaScript来完成。 二、实现思路 定义一个数组,存储要更换的样式; 设置一个计数器,记录当前显示的样式,并设置一个定时器来定时更换样式; 定义一个全局变量timer,用于存储定时器的引用…

    css 2023年6月10日
    00
  • Web页面中八种创建多列等高(等高列布局)的实现技术

    下面就来详细讲解一下“Web页面中八种创建多列等高(等高列布局)的实现技术”的攻略。 一、使用Flexbox布局 使用Flexbox布局是一种常用的创建多列等高布局的方式,需要设置父容器的display属性为flex,并且给子元素设置flex-grow:1,如下所示: .container { display: flex; } .item { flex-gr…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部