Имеет ли значение порядок выбора SCSS (SASS) для вложенных классов

Здесь у меня есть 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 psuedo-селектор для элемента списка?

Спасибо!

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>

Кроме того, вы хотите использовать двойные двоеточия для ::before псевдоэлемент (обновлен в CSS3).

Другие вопросы по тегам