Loading画像でアニメGIFを使うのは手軽なんですが、やはりLOADINGなのに、読み込みが重いと何のための読み込みなのか疑問に感じ始めたので、今後はCSSのみでLoadingアニメーションを作っていきたいと思います。
とりあえず、GIF命という人向けには、過去記事の、GIFアニメリンクをお勧めします。
[素材] 著作権フリーの「Loading」Gifアニメーション画像 40個
Dropアニメ
今回は、水滴が移動するようなアニメーションをイメージして、以前書いた記事
[css] エレメントが結合するアニメの作成を少し改造して、作って見ました。
サンプル
ソースコード
<DOCTYPE html>
<html>
<head>
<style>
.loading{
filter:url(#water);
position:relative;
top:10px;
left:10px;
}
.drop{
position:relative;
width:200px;
height:64px;
}
.drop > .start,
.drop > .end{
position:absolute;
width:64px;
height:64px;
background-color:#1DA9F1;
border-radius:50%;
}
.drop > .start{
left:0;
}
.drop > .end{
right:0;
}
.drop > .mid{
position:absolute;
width:32px;
height:32px;
top:16px;
left:0;
background-color:#1DA9F1;
border-radius:50%;
animation: drop-mid 2s ease-in-out infinite;
}
.drop > .mid:nth-child(2){
border-radius:1px solid black;
animation-delay: 1s;
}
@keyframes drop-mid{
0%{
left:32px;
}
100%{
left:calc(100% - 64px);
}
}
</style>
</head>
<body>
<h1>CSS Loading-Animation - Drop</h1>
<div class="loading">
<div class="drop">
<div class="start"></div>
<div class="mid"></div>
<div class="mid"></div>
<div class="end"></div>
</div>
<svg style="position: absolute;" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="water">
<feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"></feGaussianBlur>
<feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 19 -9" result="goo"></feColorMatrix>
<feComposite in="SourceGraphic" in2="goo" operator="atop"></feComposite>
</filter>
</defs>
</svg>
</div>
</body>
</html>
ほんのちょっとだけ解説
class="mid"が移動している水滴ですが、2つ置いて、animation-delayでずらしながら表示しています。
1つだと、なんとなく間の抜けたアニメーションだったので、2つにしていますが、距離を大きくして数を増やしても面白いかもしれません。
あとは、class="loading"エレメントを画面の中央にして、背景に半透明blackなどをセットすると、loadingで利用できるようになると思います。
贅沢を言えば、loadingの時に欲しいprogress値ですかね?次回はそういうインターフェイスのloadingを作ってみるとしよう。
0 件のコメント:
コメントを投稿