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

标签 css sass css-selectors

这里我使用 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 伪选择器的样式,哪一个是正确的?

谢谢!

最佳答案

是的,顺序很重要。 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>

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

关于css - SCSS(SASS)选择器顺序对嵌套类是否重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44727665/

相关文章:

css - 将 SCSS 重写为 LESS

CSS 覆盖不显示

css - 我可以按特定顺序定位 css 选择器吗?

html - 垂直对齐 : middle; div in bootstrap carousel?

jquery - 特定尺寸和位置的实心球

html - 在列中显示 <li>

html - 'glyphicon glyphicon-plus' 不显示

ruby-on-rails-4 - Bootstrap Rails 4 sass 布局不工作

css - a vs a :link, 有什么区别?

javascript - 在带有 data-id 属性的选择器中使用变量