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

概述

在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日

相关文章

  • HTML5中一些酷炫又有趣的新特性代码整理汇总

    HTML5是一种新一代的标准,它引入了很多新的特性和标签来增强Web页面的功能和表现效果。以下是一些HTML5中酷炫又有趣的新特性: 1. 色彩选择器 HTML5新增了一个type为color的input标签,可以让用户方便地选择颜色。它是一个可视化的颜色选择器,用户可以通过拖动鼠标来选择颜色,然后把选好的颜色作为值传给后端程序。以下是一个例子: <l…

    css 2023年6月9日
    00
  • 原生js和jQuery实现淡入淡出轮播效果

    下面是”原生JS和jQuery实现淡入淡出轮播效果”的完整攻略。 1. 原生JS实现淡入淡出轮播效果 1.1 HTML结构 首先,我们需要先在HTML页面中定义好轮播图的结构,这里使用ul和li标签来实现,每个li标签里面放置一张轮播图。 <div class="slider"> <ul class="slid…

    css 2023年6月10日
    00
  • html、css基础注意点(前端必看篇)

    HTML 基础注意点 语法规范 HTML 语言是由标签组成的,标签种类繁多,但遵循统一的语法规范。HTML文档以<!DOCTYPE html>开头,及标签语法格式为: <标签名 属性名1="属性值1" 属性名2="属性值2"> 内容 </标签名> 其中标签名为该标签的名称,属性名及属…

    css 2023年6月9日
    00
  • 5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)

    5分钟让你掌握CSS3阴影、倒影、渐变小技巧 介绍 本教程将向你展示如何使用CSS3的阴影、倒影、渐变等小技巧来美化你的网站页面。通过学习这些技巧,你可以让你的网站看起来更加炫酷、专业。 阴影 CSS3的阴影属性可以为任何元素添加阴影效果。你可以通过使用box-shadow属性来实现这个效果。box-shadow有四个参数:水平位置、垂直位置、模糊半径和颜色…

    css 2023年6月9日
    00
  • 浅析微信小程序自定义日历组件及flex布局最后一行对齐问题

    下面我将详细讲解如何自定义微信小程序日历组件以及如何解决Flex布局最后一行对齐问题。 一、微信小程序自定义日历组件的开发 1. 组件需求与功能 日历组件是一个比较常见的组件,尤其在需要显示多个日期或者时间的场景中使用较多。在微信小程序中,可以通过自定义组件的形式来开发日历组件,下面是该组件的实现需求与功能: 实现可以选择年、月、日的日历组件 可以显示指定月…

    css 2023年6月11日
    00
  • js实现简易垂直滚动条

    以下是“js实现简易垂直滚动条”的完整攻略: 1. 实现思路 实现一个简易的垂直滚动条,需要做到以下几点: 根据内容的高度和容器的高度,计算出滚动条的高度,并渲染出来。 监听滚动条的滚动事件,根据滚动条的位置,设置内容区域的滚动位置。 2. 实现步骤 2.1 创建HTML结构 首先,我们需要在HTML中创建好基本的结构。在容器里添加内容区域和滚动条区域两个子…

    css 2023年6月10日
    00
  • 五十音小游戏中的前端知识小结

    让我来为你详细讲解“五十音小游戏中的前端知识小结”的完整攻略。 五十音小游戏中的前端知识小结 一、目标 本游戏主要目的是帮助用户学习日语五十音,并测试用户对于五十音的掌握程度。同时,本游戏也应用了一些前端技术,可以帮助使用者更好地理解和学习前端知识。 二、游戏流程 打开游戏页面,用户可以看到五十音表; 选择学习模式或测试模式; 如果选择学习模式,用户可以单击…

    css 2023年6月9日
    00
  • JS+CSS实现网页加载中的动画效果

    下面是详细讲解JS+CSS实现网页加载中的动画效果的完整攻略: 1. 确定动画效果 在开始编写代码之前,我们需要确定需要实现的动画效果。在网页加载过程中,我们通常会展示一个加载动画来提示用户页面正在加载中,这样能够有效提高用户体验。 由于动画效果有很多种,我们可以选择一种比较简单的加载动画效果——旋转动画。这样做的好处是实现较为简单,效果也比较明显。 2. …

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