SCSS (SASS) 选择器顺序对嵌套类是否重要

Does SCSS (SASS) selector order matter for nested classes

提问人:Jacob Birkett 提问时间:6/24/2017 最后编辑:BoltClockJacob Birkett 更新时间:6/24/2017 访问量:597

问:

在这里,我有 SCSS 来设置列表项的样式。我想知道的是类和伪选择器的选择顺序。所以基本上,等于?&:before.active&.active:before

以下是后者的完整示例:

.sidebar-list {
  list-style-type: none;
  padding: 0;

  & li {
    padding: 4px 0;

    &:before {                      // Here,
      color: darken($font-color, 60%);
      font-family: "FontAwesome";
      content: "\f101\00a0";
    }

    &.selected:before {             // And here.
      color: darken($font-color, 30%);
    }
  }
}

而前者是重要的部分(在里面):li

    &:before {                 // Here,
      color: darken($font-color, 60%);
      font-family: "FontAwesome";
      content: "\f101\00a0";

      &.selected {             // And here. This would evaluate to "li:before.selected"
        color: darken($font-color, 30%);
      }
    }

哪一个适合为列表项设置伪选择器的样式?:before

谢谢!

CSS的 飒爽的 css-selectors

评论


答:

3赞 Wes Foster 6/24/2017 #1

是的,顺序确实很重要。 基本上会被忽略,因为它是无效的。li:before.selected

下面是一个代码片段,例如:

span::before {
  content:'span::before (Normal)';
  background-color: #ddd;
}

/* Valid */
span.ribbon::before {
  content: "span.ribbon::before (Valid)";
  background-color: #0f0;
}

/* Invalid. Will be ignored */
span::before.ribbon {
  content: "span::before.ribbon (Invalid)";
  background-color: #f00;
}
<span></span>
<span class="ribbon"></span>

此外,您需要为伪元素使用双冒号(在 CSS3 中更新)。::before

评论

0赞 Jacob Birkett 6/24/2017
CSS psuedo-selectors(或内容)只需要一个冒号。只有伪元素需要 .(我查了一下以确保:stackoverflow.com/a/41867706/2512078)谢谢!这是一个很好的答案。::