src/assets/sass/global/mixins/ に、any-hover・:focus-visible・リンクの opacity 打ち消しなどを含めたホバー用 Sass mixin を置いている。コンポーネント SCSS では @use '../global' as *; のあと @include で呼び出す。各セクションに、このデモで使っている mixin を記載している。
背景色の変化
.c-button {
--button-bg: var(--color-bg-sub);
--button-bg-hover: var(--color-theme);
--button-text-color: var(--color-text);
--button-text-color-hover: var(--color-bg);
background-color: var(--button-bg);
color: var(--button-text-color);
@include hover-bg;
}
スケール(拡大/縮小)
.c-button {
@include hover-scale;
}
スライド
.c-button {
--button-bg: var(--color-bg-sub);
--button-bg-hover: var(--color-theme);
--button-text-color: var(--color-text);
--button-text-color-hover: var(--color-bg);
background-color: var(--button-bg);
color: var(--button-text-color);
@include hover-bg-slide-before;
}
シャドウの変化
.c-button {
@include hover-shadow;
}
リップルエフェクト
.c-button {
--button-bg: var(--color-bg-sub);
--button-bg-hover: var(--color-theme);
--button-text-color: var(--color-text);
--button-text-color-hover: var(--color-bg);
background-color: var(--button-bg);
color: var(--button-text-color);
@include hover-ripple-after;
}
アイコンのアニメーション
.c-button {
--button-bg: var(--color-bg-sub);
--button-bg-hover: var(--color-theme);
--button-text-color: var(--color-text);
--button-text-color-hover: var(--color-bg);
background-color: var(--button-bg);
color: var(--button-text-color);
@include button-icon-after(url("../images/common/icon_arrow_right.svg"));
@include button-icon-after-nudge;
}
グラデーションの変化
.c-button-gradient {
--button-bg: var(--gradation-theme-accent-hover);
--button-bg-hover: color-mix(var(--color-bg) 10%, transparent);
--button-text-color: var(--color-bg);
--button-text-color-hover: var(--color-bg);
background-image: var(--button-bg);
color: var(--button-text-color);
@include hover-bg-position-slide;
}
グラデーションにオーバーレイ(スライド)
.c-button-gradient {
--button-bg: var(--gradation-theme-accent-hover);
--button-bg-hover: color-mix(var(--color-bg) 10%, transparent);
--button-text-color: var(--color-bg);
--button-text-color-hover: var(--color-bg);
background-image: var(--button-bg);
color: var(--button-text-color);
@include hover-bg-slide-before;
}