波打つローダーの作成方法
波打つローダーの作成方法を紹介します。
デモ
See the Pen
波打つローダー by Sosak (@Sosak2021)
on CodePen.
HTML
<div class="waving-loader">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span> <!-- 10-->
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span> <!-- 10-->
</div>
divタグの中にspanタグを20個作成します。
SCSS
.waving-loader {
position: relative;
width: 400px;
height: 400px;
transform-style: preserve-3d; //3dのとき必要
transform: perspective(800px) rotateX(60deg); //角度かえる
& span {
position: absolute;
display: block;
border: 2px solid #fff;
border-radius: 50%;
animation: animate 3s ease-in-out infinite;
@for $i from 1 through 20 {
&:nth-child(#{$i}) {
top: ($i - 1) * 10px;
left: ($i - 1) * 10px;
bottom: ($i - 1) * 10px;
right: ($i - 1) * 10px;
animation-delay: ($i - 5) * 0.1s;
}
}
}
}
@keyframes animate {
0%,100% {
transform: translateZ(-100px);
}
50% {
transform: translateZ(100px);
}
}
top、bottom、right、leftの値とanimation-delayの値をそれぞれ少しずつずらすことで波を打たせることができます。
円形はborder-radiusです。
角度を変えるため、transform-styleにpreserve-3dを設定し、transformでは、perspectiveにだいたい500px以上の値を設定して、rotateをセットします。
あとは、keyframesでtranslateZの値を上下させることで、それぞれのspanタグが移動します。