4个好用的 CSS 伪类 :not()、:has()、 :is()、:where()

news2024/9/26 3:25:16

文章目录

    • (1):not()
    • (2):has()
    • (3):is()
    • (4):where()
    • (5):where()与:is() 的区别

(1):not()

:not 伪类:用于选择不满足给定条件的元素,也被称为反选伪类。

  • 语法::not(selector)
  • 示例:除了class为.two, .five,其他的li元素背景颜色变为红色
<html>
<head>
  <style>
   ul :not(.two, .five) {
      background-color: red;
    }
  </style>
</head>
<body>
  <ul>
    <li class="one">111</li>
    <li class="two">222</li>
    <li class="three">333</li>
    <li class="four">444</li>
    <li class="five">555</li>
    <li class="six">666</li>
  </ul>
</body>
</html>
  • 效果如下:
    在这里插入图片描述

  • 浏览器兼容性:
    在这里插入图片描述

(2):has()

:has 伪类:用于选择包含特定子元素的元素

  • 语法::has(selector)
  • 示例:选择ul里面包含.two或.four元素的ul元素
<html>
<head>
  <style>
   ul:has(.two, .four) {
      background-color: red;
    }
  </style>
</head>
<body>
  <ul>
    <li class="one">111</li>
    <li class="two">222</li>
  </ul>
  <ul>
    <li class="three">333</li>
    <li class="four">444</li>
  </ul>
  <ul>
    <li class="five">555</li>
    <li class="six">666</li>
  </ul>
</body>
</html>
  • 效果如下:
    在这里插入图片描述

  • 注意】浏览器兼容性:
    在这里插入图片描述

(3):is()

:is 伪类:可以选择多个类名,而不需要编写多个选择器,从而简化了代码

  • 语法::is(selector)
  • 示例:选择 < ul > 元素下具有 .two、.four 或 .six 类的 < li > 元素,并将它们的背景颜色设置为红色
<html>
<head>
  <style>
   ul li:is(.two, .four, .six) {
      background-color: red;
    }
  </style>
</head>
<body>
  <ul>
    <li class="one">111</li>
    <li class="two">222</li>
    <li class="three">333</li>
    <li class="four">444</li>
    <li class="five">555</li>
    <li class="six">666</li>
  </ul>
</body>
</html>
  • 效果如下:
    在这里插入图片描述

  • 浏览器兼容性:
    在这里插入图片描述

(4):where()

:where 伪类:用于选择满足给定条件的元素(与 :is 伪类类似),并可以与其他选择器组合使用

  • 语法::where(selector)
  • 示例:选择 < ul > 元素下具有 .two、.four 或 .six 类的 < li > 元素,并将它们的背景颜色设置为红色
<html>
<head>
  <style>
   ul li:where(.two, .four, .six) {
      background-color: red;
    }
  </style>
</head>
<body>
  <ul>
    <li class="one">111</li>
    <li class="two">222</li>
    <li class="three">333</li>
    <li class="four">444</li>
    <li class="five">555</li>
    <li class="six">666</li>
  </ul>
</body>
</html>
  • 效果如下:
    在这里插入图片描述

  • 浏览器兼容性:

在这里插入图片描述

(5):where()与:is() 的区别

:where() 伪类和 :is()伪类都是用于简化选择器的书写。它们都允许将多个选择器组合在一起,使用逗号分隔的选择器列表作为参数,以提供更简洁的选择器语法。
例如 :is(.class1, .class2, .class3)或者:where(.class1, .class2, .class3)。

语法差异如下:

  • :is() 伪类在选择器的权重计算中起到作用,它会创建一个新的层级,在 CSS 规则中的权重计算中影响选择器的优先级,:is() 的优先级是由它的选择器列表中优先级最高的选择器决定。
  • :where() 伪类不会创建新的层级,它只是作为语法上的辅助,提供更简洁的选择器语法,不会影响选择器的权重计算,:where() 的优先级总是为 0。

通过下面的代码示例来说明这两个伪类的区别:

<html>
<head>
  <style>
   ul li:is(.two, .four, .six) {
      background-color: red;
   }
   ul li:where(.two, .four, .six) {
      background-color: yellow;
      color: blue;
   }
  </style>
</head>
<body>
  <ul>
    <li class="one">111</li>
    <li class="two">222</li>
    <li class="three">333</li>
    <li class="four">444</li>
    <li class="five">555</li>
    <li class="six">666</li>
  </ul>
</body>
</html>

显示效果:

在这里插入图片描述
可以看到:
:where() 伪类中的background-color: yellow并未覆盖:is() 中的background-color: red,只有color: blue在生效,所以:where() 并未影响选择器的权重计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序开发费用一览表,不同开发方式的费用对比

微信小程序作为当前移动互联网领域的重要入口之一&#xff0c;其开发费用因开发方式、功能需求、设计复杂度及开发团队的不同而有所差异。本文将详细梳理微信小程序开发的几种主要方式&#xff0c;并对比各方式的费用情况&#xff0c;以便企业和个人在选择时能够有更清晰的了解…

PHP 打印 V 和倒 V 图案的程序(Program to print V and inverted-V pattern)

倒 V 型模式&#xff1a;给定 n 的值&#xff0c;打印倒 V 型模式。示例&#xff1a; 输入&#xff1a;n 5 输出 &#xff1a; E D D C C B B A A 输入&#xff1a;n 7 输出 &#xff1a; G F F E E D D C C B B A…

pycharm中安装、使用扩展工具,以QT Designer为例

pycharm中安装、使用扩展工具&#xff0c;以QT Designer为例 第一步&#xff0c;下载QT Designer安装包。找到QT Designer.exe所在位置&#xff0c;复制路径 第二步&#xff0c;打开Pycharm&#xff0c;选择Setting&#xff0c;找到扩展工具&#xff08;External Tools&#xf…

git回退未commit、回退已commit、回退已push、合并某一次commit到另一个分支

文章目录 1、git回退未commit2、git回退已commit3、git回退已push的代码3.1 直接丢弃某一次的push3.2 撤销push后&#xff0c;不丢弃改动&#xff0c;重新修改后要再次push 4、合并某一次commit到另一个分支 整理几个工作上遇到的git问题。 1、git回退未commit git回退未comm…

【C++】STL-哈希表封装unorder_set和unordered_map

目录 1、实现哈希表的泛型 2、unordered_set和unordered_map的插入 3、迭代器 3.1 operator 3.2 const迭代器 4、find 5、unordered_map的operator[] 6、对于无法取模的类型 7、介绍unordered_set的几个函数 7.1 bucket_count 7.2 bucket_size 7.3 bucket 7.4 rese…

Gcc/G++编译C/C++文件(主要以C++语言为主,C语言就做阐述 用法一样 就是将G++换成GCC)

首先&#xff0c;我们在Linux中创建一个helloc.cc文件(C文件) vim helloc.cc 直接用g裸编译 g helloc.cc 生成的a.out就是二进制可执行文件 如果要产生 自定义可执行文件 就需要下面的编译步骤 繁琐操作 g -c helloc.cc 会生成目标文件 g -o hello helloc.o 此时hell…

仿SOUL社交友附近人婚恋约仿陌陌APP系统源码

专门为单身男女打造的恋爱交友社区&#xff0c;就是一个由千千万万单身男女组建的大家庭。他们来自全国各地&#xff0c;或许有着不同的人生经历&#xff0c;却有着共同的对恋爱交友的渴望。他们可以通过文字、语音、视频聊天的方式&#xff0c;和镜头前的彼此诉说自己工作中发…

95页PPT丨IBM-IT应用规划

一、IBM针对IT应用规划项目核心内容IBM在IT应用规划项目中的核心内容&#xff0c;旨在帮助企业实现数字化转型&#xff0c;优化IT资源配置&#xff0c;并确保IT战略与业务目标的一致性。以下是IBM IT应用规划项目的详细核心内容&#xff1a; 资料下载方式&#xff0c;请看每张…

LabVIEW与CANopen实现自动化生产线的设备控制与数据采集

在某工厂的自动化生产线上&#xff0c;多个设备通过CANopen网络进行通信和控制。这些设备包括传感器、执行器和PLC&#xff0c;它们共同负责监测和控制生产过程中的关键参数&#xff0c;如温度、压力、速度等。为了实现对整个生产线的集中监控和管理&#xff0c;工厂决定使用La…

深入理解同城代驾系统源码:技术架构与实现细节

今天&#xff0c;小编将深入讲解同城代驾系统的技术架构与实现细节。 一、同城代驾系统的基本功能模块 一个完整的同城代驾系统通常包括以下核心功能模块&#xff1a; 1.用户端应用 2.司机端应用 3.后台管理系统 4.消息推送与通知 二、技术架构设计 同城代驾系统的技术架…

程序设计基础(c语言)_补充_1

1、编程应用双层循环输出九九乘法表 #include <stdio.h> #include <stdlib.h> int main() {int i,j;for(i1;i<9;i){for(j1;j<i;j)if(ji)printf("%d*%d%d",j,i,j*i);elseprintf("%d*%d%-2d ",j,i,j*i);printf("\n");}return 0…

DNS处理模块 dnspython

DNS处理模块 dnspython 标题介绍安装dnspython 模块常用方法介绍实践&#xff1a;DNS域名轮询业务监控 标题介绍 Dnspython 是 Python 的 DNS 工具包。它可用于查询、区域传输、动态更新、名称服务器测试和许多其他事情。 dnspython 模块提供了大量的 DNS 处理方法&#xff0c…

Flink 实时数仓(五)【DWD 层搭建(三)交易域事实表】

前言 今天开始交易域事实表的创建&#xff0c;上一节流量域中的表&#xff08;其实就是一个 kafka 主题&#xff09;数据来自于日志&#xff0c;而交易域的数据来自于业务系统&#xff0c;业务表之间是有关联性的。 我们之前在离线数仓中&#xff08;声明粒度&#xff08;最细粒…

oracle数据库监控数据库中某个表是否正常生成

事情经过&#xff1a; 公司某业务系统每月25日0点会自动生成下个月的表&#xff0c;表名字是tabname_202407的格式。由于7月25日0点做系统保养的时候重启了应用系统服务&#xff0c;导致8月份的表没有生成。最终操作业务影响&#xff0c;为此决定对这个表进行监控&#xff0c;…

Depth Anything——强大的单目深度估计模型

概述 单目深度估计&#xff08;Monocular Depth Estimation, MDE&#xff09;是一项在计算机视觉领域中非常重要的技术&#xff0c;它旨在从单张图像中恢复出场景的三维结构。这项技术对于机器人导航、自动驾驶汽车、增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08…

DVWA(SQL注入)medium、high

medium &#xff08;1&#xff09;判断注入是字符型还是数值型 数值型&#xff0c;获得了用户信息。 id 1 or 11 &#xff08;2&#xff09;查询字段数 为3时报错&#xff0c;代表字段数为2。 1 order by 3 &#xff08;3&#xff09;显示字段顺序 1 union select 1,2 &…

大数据与人工智能:数据隐私与安全的挑战_ai 和 数据隐私

前言 1.背景介绍 随着人工智能(AI)和大数据技术的不断发展&#xff0c;我们的生活、工作和社会都在不断变化。这些技术为我们提供了许多好处&#xff0c;但同时也带来了一系列挑战&#xff0c;其中数据隐私和安全是最为关键的之一。数据隐私和安全问题的出现&#xff0c;主要…

Redis7.x安装系列教程(一)单机部署

1、前言&环境准备说明 本文及接下来3篇将详细介绍在linux环境Redis7.X源码安装系列教程&#xff0c;从最简单的单机部署开始&#xff0c;逐步升级主从部署、哨兵部署和集群部署。 环境准备&#xff1a;如果有条件的用云服务器&#xff0c;如果没有的使用VMware 虚拟机&am…

【精通Redis】Redis事务

文章目录 前言一、标准事务1.1 标准事务的特性1.2 标准事务的生命周期1.3 事务的作用 二、Redis事务2.1 Redis事务的特性2.2 Redis事务与普通事务的区别 三、Redis事务常用命令总结 前言 我们在使用Redis的时候&#xff0c;有时为了处理多个结构&#xff0c;需要向Redis中一次…

Python数据结构实战:列表、字典与集合的高效使用

前言 在编程中&#xff0c;选择合适的数据结构对于提高程序效率至关重要。本文将介绍Python中最常用的数据结构——列表&#xff08;list&#xff09;、字典&#xff08;dict&#xff09;和集合&#xff08;set&#xff09;&#xff0c;并探讨它们的内部实现以及如何高效地使用…