波紋状に広がるアニメーションの実装を試してみます。
サンプルコード
ホバーすると波紋が広がるようにしてみます。
<a href="#" class="sample"></a>
波紋部分は疑似要素を使用します。
transitionでアニメーションの設定を行い、scaleで拡大しながらopacityでフェードアウトしていくようにします。
.sample {
position: relative;
width: 60px;
aspect-ratio: 1 / 1;
border-radius: 50%;
background-color: skyblue;
}
.sample::before {
content: '';
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
aspect-ratio: 1 / 1;
border: 1px solid skyblue;
border-radius: 50%;
}
.sample:hover::before {
transition:
scale 800ms linear,
opacity 500ms linear 300ms;
scale: 1.8;
opacity: 0;
}
これで波紋のアニメーションが実装できました。
波紋状に広がるアニメーションのデモページ
先ほどは単一の波紋でしたが、繰り返し波紋が広がるようにしてみます。
transitionではなくkeyframesを使ってアニメーションの設定を行います。
.sample {
position: relative;
width: 60px;
aspect-ratio: 1 / 1;
border-radius: 50%;
background-color: skyblue;
}
.sample::before,
.sample::after {
content: '';
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
aspect-ratio: 1 / 1;
border: 1px solid skyblue;
border-radius: 50%;
}
.sample:hover::before {
animation: ripple 1200ms linear infinite;
}
.sample:hover::after {
animation: ripple 1200ms linear 600ms infinite;
}
@keyframes ripple {
0% {
scale: 1;
}
50% {
opacity: 1;
}
100% {
scale: 2;
opacity: 0;
}
}
これで繰り返しの波紋のアニメーションができました。
波紋状に広がるアニメーションのデモページ
コメントが承認されるまで時間がかかります。