SASS: не псевдокласс на mixin? Является ли это возможным? - PullRequest
0 голосов
/ 28 июня 2018

В Bootstrap 4 есть миксин hover-focus, который определяется следующим образом (в scss/mixins/_hover.scss):

@mixin hover-focus {
  &:hover,
  &:focus {
    @content;
  }
}

По сути, это просто :hover плюс :focus.


Но когда я использую его в своем коде, мне интересно, есть ли способ сделать отрицание на миксине, как псевдокласс :not на селекторе? Я думаю, что это затруднило бы чтение кода, если бы я использовал @include hover-focus { //rules } везде в своем коде, но &:not(:hover):not(:focus) { //more rules } здесь.

Я пробовал:

.myclass, .myclass2 {
  &:not(@include hover-focus) {
    // myRules
}

но вместо генерации

.myclass:not(:hover):not(:focus), .myclass2:not(:hover):not(:focus) {
  // myRules
}

это дает мне

Error: Invalid CSS after "&:not(": expected ")", was "@include hover-..."
    on line 2 of test.scss


Итак, я что-то не так сделал или это вообще невозможно?

Редактировать: Я только что понял отрицание &:hover, &:focus не &:not(:hover), &:not(:focus), а &:not(:hover):not(:focus): / Исправлено в вопросе.

...