Псевдоклассы, такие как :hover
, не могут быть применены через встроенные стили. Они могут применяться только к самим селекторам CSS, но поскольку вы не используете именованный класс, вы также не можете применять псевдоклассы.
Типичные библиотеки CSS-in-JS генерируют «виртуальное» имя класса и вместо этогоприменения фактических стилей к элементу, просто примените имя класса и создайте соответствующий селектор CSS во время выполнения.
Вам придется либо создать внешний CSS с стилями, созданными вручную
// some.css
.some-class { ... }
.some-class:hover { ... }
// your.cljs
[:bp/icon {:icon "database" :class "some-class} ...]
используйте некоторую библиотеку, которая делает это для вас во время выполнения (например, garden
), или имитируйте то же самое поведение при наведении, присоединяя пользовательские обработчики событий JS для onmouseenter
onmouseout
и манипулируя фактическими стилями во время выполнения.
Встроенные стили довольно ограничены в том, что они могут достичь (например, без медиа-запросов), поэтому вы хотите придерживаться реального CSS по большей части. Либо напрямую, либо через JS, который генерирует его во время выполнения.