Как объединить два селектора SCSS?

#css #sass

#css #sass

Вопрос:

Я хочу придать элементу другой цвет, если существует одно из двух условий. Вот код:

   .btn-link{
    color: $color-black;
    margin: 0;

  amp;:hover{
    color: $color-light-blue;
  }
  amp;:not(.collapsed){
    color: $color-light-blue;
  }
}
  

Все хорошо, но будет лучше, если вы сможете объединить два селектора

Я уже пробовал:

  amp;:hoveramp;:not(.collapsed){
        color: $color-light-blue;
      }
  

Но идентифицируется только hover

Комментарии:

1. То, как вы это написали, означало оба :hover и :not(:collapsed) одновременно.

Ответ №1:

Так же, как вы делаете в CSS:

 amp;:hover, amp;:not(.collapsed) {
    color: $color-light-blue;
}
  

Это задает цвет, только если элемент находится в состоянии наведения или не имеет класса collapsed .

Ответ №2:

Вы можете поставить запятую между двумя объединяющими селекторами, вот так: amp;:hover, amp;:not(.collapsed) {

Полный пример:

HTML:

 <span class="btn-link">one class</span>
<span class="btn-link collapsed">two class</span>
  

CSS:

 $color-black: black;
$color-light-blue: lightblue;

.btn-link {
  color: $color-black;
  margin: 0;
  amp;:hover, amp;:not(.collapsed) {
    color: $color-light-blue;
  }
}
  

JSfiddle.

Извините, нет StackSnippet. Мы все еще не можем обрабатывать SCSS здесь!

Ответ №3:

Вы можете попробовать это простое изменение вашего кода

 /*SCSS*/
$color-light-blue : red;
.btn-link {
  amp;:hover:not(.collapsed) {
    color: $color-light-blue;
  }
}
/*compiled  CSS*/

.btn-link:hover:not(.collapsed) {
  color: red;
}  
 <span class="btn-link">one class</span>
<span class="btn-link collapsed">two class</span>