#css #twitter-bootstrap #postcss #css-modules #cssnext
#css #twitter-bootstrap #postcss #css-модули #cssnext
Вопрос:
В проекте, над которым я работаю, мы используем модули css с postcss
(также postcss-cssnext
и postcss-include
). У нас также есть bootstrap как зависимость, которая предоставляется глобально.
В данном компоненте у меня есть пользовательский класс для кнопки. Итак, моя кнопка имеет следующие классы: btn btn-custom
.
В соответствии с требованиями я хочу изменить внешний вид кнопки, когда она находится в активном состоянии. Для этого в bootstrap есть следующий селектор: .btn.active, .btn:active
. Перезапись псевдокласса — это простая часть. Однако .active
класс — это то, где он становится сложным.
В моем css-файле я попробовал несколько способов справиться с этим, но, похоже, ни один из них не работает. Вот некоторые из вещей, которые я пробовал:
.btn-custom {
amp;.active, amp;:active {}
@nested :global amp;.active, amp;:active {}
@nested :global amp; { amp;.active, amp;:active: {} }
@nested :global { amp;.active, amp;:active: {} }
}
:global {
.btn-custom { amp;.active, amp;:active {} }
.btn { amp;.active, amp;:active {} }
}
Есть ли у кого-нибудь идеи о том, как этого можно достичь?
Комментарии:
1. Это вообще не работает? Или это просто переопределяется?
2. Не работает вообще. Класс .active преобразуется в модули css, такие как class (добавляется некоторый хэш), когда его нет
:global
. Когда он:global
снова включен, он вообще не работает.
Ответ №1:
Глобальные целевые классы должны быть заключены в скобки, например:
.btn-custom {
color: red;
}
.btn-custom:global(.active) {
color: blue;
}
Итак, с вложенностью:
.btn-custom {
amp;:global(.active),
amp;:active {}
}
Этот последний не проверялся, я думаю, здесь важен порядок плагинов PostCSS.