Если цвет при наведении всегда один и тот же, вы можете просто использовать псевдо-класс :hover
.Например, этот CSS делает значок синим при наведении SVG-контейнера, и переход занимает 400 мсек:
<style scoped>
/* <g class="icon" ...> */
.icon {
transition: fill .4s ease;
}
svg:hover .icon {
fill: blue;
}
</style>
demo 1
В противном случае, если наведите курсорЦвет динамический, вы бы использовали JavaScript.Вы можете сделать условное условие fill
для локального логического значения, которое изменяется в зависимости от событий mouseover
/ mouseout
:
- В
IconBase.vue
определить локальную переменную данных (например, с именем * 1018).*) для отслеживания состояния наведения и prop
для установки цвета в состоянии наведения:
props: [
// ...
iconHoverColor: {
type: String,
default: "currentColor"
}
],
data() {
return {
isHover: false
}
}
Редактируйте шаблон
IconBase.vue
, чтобы сделать
fill
условным для
isHover
, и установите
isHover
на основе событий
mouseover
/
mouseout
контейнера SVG:
<svg @mouseover="isHover=true" @mouseout="isHover=false">
<g :fill="isHover ? iconHoverColor : iconColor">
Чтобы установить цветовой переход, используйте свойство CSS
transition
для класса, примененного к
<g>
:
<style scoped>
/* <g class="icon" ...> */
.icon {
transition: fill .4s ease;
}
</style>
В
ScrollToTop.vue
отредактируйте использование
IconBase
для установки цвета наведения:
<icon-base icon-hover-color="#ff0000" ...>
demo 2