css选择器的优先级-原生 CSS 嵌套简介

2023-08-26 0 6,488 百度已收录

嵌套是使用 Sass 等 CSS 预处理器的核心动机之一。 如今css选择器的优先级,这个功能已经出现在标准浏览器 CSS 中,并具有类似的句型。 您可以在不依赖预处理器的情况下构建系统吗?

CSS 嵌套可以节省打字时间并使句型更易于阅读和维护。 到目前为止,您必须输入完整的选择器路径,如下所示:

.parent1 .child1,
.parent2 .child1 {
  color: red;
}

.parent1 .child2,
.parent2 .child2 {
  color: green;
}

.parent1 .child2:hover,
.parent2 .child2:hover {
  color: blue;
}

现在,您可以将子选择器嵌套在父选择器中,例如:

.parent1.parent2 {

  .child1 {
    color: red;
  }

  .child2 {
    color: green;

    &:hover {
      color: blue;
    }
  }

}

您可以在任何级别嵌套选择器,但请注意不要超过两到五层。 嵌套级别没有技术限制,可能会使代码更难阅读,并使生成的 CSS 变得麻烦。

直到 2023 年 3 月,还没有浏览器支持嵌套 CSS 句子模式。 您需要在构建步骤中使用 CSS 预处理器(例如 Sass、Less 或 PostCSS),以便可以将嵌套代码转换为常规的完整选择器语法。 嵌套现已在 Chrome 112+ 和 Safari 16.5+ 中实现,Firefox 将在 2023 年晚些时候支持它。

image.pngCSS原生嵌套规则

您可以将任何选择器嵌套在另一个选择器中,但它必须以 &, 等符号开头。 (对于 HTMLclass)、#(对于 HTMLid)、@(对于媒体查询)、:、::、*、+、~、> 或 [。 换句话说,它不能直接引用 HTML 元素。 下面的代码无效,

选择器不被解析:

.parent1 {

  /* FAILS */
  p {
    color: blue;
  }

}

解决这个问题最简单的方法是使用 & ,它以与 Sass 相同的方式引用当前选择器:

css选择器的优先级-原生 CSS 嵌套简介

.parent1 {

  /* WORKS */
  & p {
    color: blue;
  }

}

或者,可以这样解决:

在这个简单的示例中,它们都可以工作,但稍后使用更复杂的样式表,您可能会遇到优先级问题。

& 还允许您在父选择器上定位伪元素和伪类。 例如:

css选择器的优先级-原生 CSS 嵌套简介

p.my-element {

  &::after {}

  &:hover {}

  &:target {}

}

如果不使用 &,您的目标将是选择器的所有子元素,而不是 p.my-element 本身。 (同样的情况也发生在 Sass 中)。

需要注意的是css选择器的优先级,您可以在选择器中的任何位置使用 &,例如:

.child1 {

  .parent3 & {
    color: red;
  }

}

css选择器的优先级-原生 CSS 嵌套简介

这翻译成以下非嵌套句子:

.parent3 .child1 { color: red; }

您甚至可以在选择器中使用多个 & 符号:

ul {

  & li & {
    color: blue;
  }

}

这适用于嵌套

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 css css选择器的优先级-原生 CSS 嵌套简介 https://www.wkzy.net/game/156122.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务