LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

CSS :where,:is,:has伪类选择器

liguoquan
2024年11月11日 15:27 本文热度 161
:CSS :where,:is,:has伪类选择器


CSS :where,:is,:has伪类选择器

于 2024-05-19 23:17:59 发布
阅读量1k 收藏 18
点赞数 11
分类专栏: css 文章标签: css3 css 前端

1 :where伪类选择器

1.1 解释

:where伪类选择器,参数为 选择器列表,将会选择所有能被该选择器列表中任何一条规则选中的元素,优先级总是为 0,即拥有最低优先级,当有其他规则和 :where 同时被命中时, :where 一定是失效的

1.2 作用

  • 组合选择器列表,简化css语法
  • 重置基础样式

1.3 举例

<html>
  <head>
    <style type="text/css">
      /* header p,
      main p,
      footer p {
        color: red;
        font-size: 20px;
      } */
      :where(header, main, footer) p {
        color: red;
        font-size: 20px;
      }
    </style>
  </head>
  <body>
    <header>
      <p>头部</p>
      <div class="content-header"></div>
    </header>
    <main>
      <p>内容</p>
      <div class="main"></div>
    </main>
    <footer class="foot">
      <p>尾部</p>
      <div class="content-footer"></div>
    </footer>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
header p,
main p,
footer p {
  color: red;
  font-size: 20px;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

等价于

:where(header, main, footer) p {
  color: red;
  font-size: 20px;
}
  • 1
  • 2
  • 3
  • 4

  footer p{
    color: blue;
    font-size: 22px;
  }
  :where(header, main, footer.foot) p {
    color: red;
    font-size: 20px;
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意这里的样式优先级,:where选择器最低,尽管:where使用了footer.foot p,依然没有footer p优先级高

2 :is伪类选择器

2.1 解释

:is伪类选择器,参数为 选择器列表,将会选择所有能被该选择器列表中任何一条规则选中的元素,优先级会计入整个选择器的优先级(采用其最具体参数的优先级)

2.2 作用

组合选择器列表,简化css语法

2.3 举例

<html>
  <head>
    <style type="text/css">
      /* header p,
      main p,
      footer p {
        color: red;
        font-size: 20px;
      } */
      :is(header, main, footer) p {
        color: red;
        font-size: 20px;
      }
    </style>
  </head>
  <body>
    <header>
      <p>头部</p>
      <div class="content-header"></div>
    </header>
    <main>
      <p>内容</p>
      <div class="main"></div>
    </main>
    <footer class="foot">
      <p>尾部</p>
      <div class="content-footer"></div>
    </footer>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
header p,
main p,
footer p {
  color: red;
  font-size: 20px;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

等价于

:is(header, main, footer) p {
  color: red;
  font-size: 20px;
}
  • 1
  • 2
  • 3
  • 4

  :is(header, main, footer.foot) p {
    color: red;
    font-size: 20px;
  }
  .foot p{
    color: blue;
    font-size: 22px;
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意这里的样式优先级,:is选择器使用footer.foot p设置的样式比直接使用.foot p设置的样式优先级高

作为对比,下面使用 footer.foot p设置样式,此时优先级和:is选择器设置的优先级相同,但是footer.foot p直接设置的样式后加载回覆盖掉:is选择器设置的样式(交换位置,则:is选择器样式生效)

  :is(header, main, footer.foot) p {
    color: red;
    font-size: 20px;
  }
  footer.foot p{
    color: blue;
    font-size: 22px;
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.4 与:where选择器的不同

  • :where选择器优先级为0
  • :is选择器优先级会计入整个选择器的优先级(即根据ICE原则)

3 :has伪类选择器

3.1 解释

:has伪类选择器,参数为 选择器列表,提供了一种针对引用元素选择父元素或者先前的兄弟元素的方法
<target>:has(<selector>)

3.2 作用

选择父元素或者先前的兄弟元素

3.3 举例

<html>
  <head>
    <style type="text/css">
      div:has(div.content-footer) p{
        color:blue;
      }
      div p {
        color: red;
        font-size: 22px;
      }
      p+h1{
        color:orange;
      }
      p:has(+h1){
        color:yellow;
      }
    </style>
  </head>
  <body>
    <div>
      <p>头部</p>
      <div class="content-header"></div>
    </div>
    <div>
      <p>内容</p>
      <h1 class="main">h1</h1>
    </div>
    <div class="foot">
      <p>尾部</p>
      <div class="content-footer"></div>
    </div>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
div:has(div.content-footer) p{
        color:blue;
      }
  • 1
  • 2
  • 3

选中class是.content-footer的div元素,并且以此div元素作为子元素的div元素下的p元素

 p:has(+h1){
        color:yellow;
      }
  • 1
  • 2
  • 3

选中后面跟着h1元素的p元素(注意,p+h1选择器选择的是h1元素)


该文章在 2024/11/11 15:27:47 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved