美文网首页
7个让你眼前一亮的CSS选择器!

7个让你眼前一亮的CSS选择器!

作者: 半截短袖 | 来源:发表于2023-08-11 14:54 被阅读0次

1. :is()

mdn: CSS 伪类函数以选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素。这对于以更紧凑的形式编写大型选择器非常有用

备注: 最初该选择器被命名为 :matches()以及 :any()),但在 CSSWG issue #3258 中被重命名为 :is()

选中header main footer中的所有段落并绑定hover状态:

header p:hover,
main p:hover,
footer p:hover {
  color: red;
}

使用 :is() 可以简化成以下写法:

:is(header, main, footer) p:hover {
  color: red;
}

2. :where()

mdn: CSS 伪类函数接受选择器列表作为它的参数,将会选择所有能被该选择器列表中任何一条规则选中的元素

用法:

选中header main footer中的所有段落并绑定hover状态:

header p:hover,
main p:hover,
footer p:hover {
  color: red;
}

使用 :where() 可以简化成以下写法:

:where(header, main, footer) p:hover {
  color: red;
}

是不是感觉:is():where()的用法一模一样?

:is():where()的用法和作用是很相似的,唯一不同的在于,:where() 的优先级总是为 0,但是 :is() 的优先级是由它的选择器列表中优先级最高的选择器决定的

3. :not()

:not() CSS伪类用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中,它也被称为反选伪类negation pseudo-class)**

用法:

<p>我是一个段落。</p>
<p class="fancy">我非常非常喜欢!</p>
<div>我不是一个段落。</div>
<h2>
  <span class="foo">foo 在 h2 里面</span>
  <span class="bar">bar 在 h2 里面</span>
</h2>
.fancy {
  text-shadow: 2px 2px 3px gold;
}

/* 类名不是 `.fancy` 的 <p> 元素*/
p:not(.fancy) {
  color: green;
}

/* 非 <p> 元素 */
body :not(p) {
  text-decoration: underline;
}

/* 既不是 <div> 也不是 <span> 的元素 */
body :not(div):not(span) {
  font-weight: bold;
}

/* 不是 <div> 或 `.fancy` 的元素*/
body :not(div, .fancy) {
  text-decoration: overline underline;
}

/* <h2> 元素中不是有 `.foo` 类名的 <span> 元素 */
h2 :not(span.foo) {
  color: red;
}

4. :only-child

:only-child CSS 伪类表示没有任何兄弟元素的元素。这与 :first-child、:last-child:nth-child(1)、:nth-last-child(1) 相同,但前者具有更小的权重性。

用法

<ol>
  <li>今天天气晴朗,是个敲代码的好日子</li>
</ol>

<ol>
  <li>今天天气晴朗,是个敲代码的好日子</li>
  <li>但是写了很多bug.</li>
  <li>这很让我头疼.</li>
</ol>
li:only-child {
  color: fuchsia;
}

b:only-child {
  text-decoration: underline;
}
运行效果

5. :root

:root 这个 CSS 伪类匹配文档树的根元素。对于 HTML 来说,:root 表示<html>元素,除了优先级更高之外,与 html 选择器相同。

用法:

你可以使用:root选择器定义一个变量--main-bg-color,并在任意一个选择器中使用var来调用--main-bg-color

:root {
  --main-bg-color: lightgreen;
}
.main {
  background: var(--main-bg-color);
}

6. :empty

:empty CSS伪类用于选择不包含任何子元素的元素。子元素可以是元素节点或文本(包括空格)。但是注释、处理指令和 CSS content不会影响元素是否被认定为空。

用法:

<p>下面的节点没有内容</p>
<div></div>
<p>下面的节点有空的标签</p>
<div>
  <p>123456</p>
</div>

<p>下面的节点有注释</p>
<div><!-- 这里是注释 --></div>

<p>下面的节点有空格</p>
<div> </div>

<p>下面的节点有空的标签</p>
<div>
  <p></p>
</div>
div:empty {
  outline: 2px solid deeppink;
  height: 1em;
  width: 100px;
}
运行效果

7. :invalid

:invalid 是 CSS伪类选择器,用来选择任何未通过验证的<form><fieldset><input>或其他表单元素。

<form>
    <label for="form-name">姓名</label>
    <input type="text" name="name" id="form-name" required />
    <button type="submit">提交</button>
</form>
form:invalid > button {
  opacity: 0.3;
  pointer-events: none;
}

填入内容前/后的效果对比:

运行效果

本文由mdnice多平台发布

相关文章

  • CSS选择器

    CSS 元素选择器CSS 选择器分组CSS 类选择器详解CSS ID 选择器详解CSS 属性选择器详解CSS 后代...

  • CSS选择器

    目录: CSS派生选择器 CSS元素选择器 CSS Id 和 Class选择器 CSS 属性选择器 CSS 派生选...

  • css选择器

    css选择器】 1.css属性选择器 2.css伪类选择器 3.css层次选择器

  • CSS 选择器

    CSS 选择器 CSS 基本选择器及其扩展 CSS 基本选择器 通配符选择器 * 元素选择器 使用标签的名称...

  • CSS选择器

    CSS选择器的作用 CSS 选择器用于定位我们想要给予样式的 HTML 元素。 CSS选择器的类型 CSS选择器大...

  • Sublime 学习web的css

    html + css + js css引用 css外部样式 css优先级 css的选择器 标签选择器 类选择器 i...

  • JQuery CSS选择器

    CSS普通选择器 选择器函数 CSS伪类选择器

  • 神奇的伪类 :focus-within

    CSS 的伪类选择器和伪元素选择器,让 CSS 有了更为强大的功能。今天介绍一个神奇的选择器 :focus-wit...

  • CSS-选择器1-概述

    CSS选择器-系列文章 CSS选择器-系列文章下一节 CSS选择器2-类选择器CSS3参考手册

  • CSS权重

    这篇是基于CSS选择器的,如果对选择器不太了解可以先看另一篇CSS选择器 (一)什么是CSS权重? 权重决定了你C...

网友评论

      本文标题:7个让你眼前一亮的CSS选择器!

      本文链接:https://www.haomeiwen.com/subject/kcetmdtx.html