###目的
CSSでローディング中を示すアニメーションを実装しています。
「stop」をクリックしたときに「ラスト一回だけ実行」させたいです。
###コード
概要は以下です。
コメントアウトのloaderがアニメーションとなります。
html
1<div class="wrapper"> 2 <button type="button" class="start">start</button> 3 <button type="button" class="stop">stop</button> 4 <div class="outer"> 5 <!-- <div class="loader"></div> --> 6 </div> 7</div>
CSSは以下となっています。
css
1.wrapper { 2 background: black; 3 position: relative; 4 width: 100vw; 5 height: 100vh; 6} 7.outer { 8 width: 100%; 9 height: 100vh; 10 position: absolute; 11 overflow: hidden; 12} 13.loader { 14 height: 100%; 15 width: 100%; 16 position: absolute; 17 left: -100%; 18 background-color: rgba(255,255,255,0.2); 19 animation: loader 3s ease 0s infinite; 20} 21@keyframes loader { 22 0% { transform: translateX(0px);} 23 100% { transform: translateX(200%); } 24}
そしてstartで上記コメントアウトにloaderが入ります。
jQuery
1$('.start').click(function(){ 2 $('.outer').prepend('<div class="loader"><div>'); 3});
###試したこと
上でstopをクリックしたときに、「ラスト一回だけ実行」させたいので、プロパティを調べてそれっぽいものを使ってみました。
まず「終了の状態を維持する」というanimation-fill-modeですが、以下forwardsでできませんでした。
jQuery
1$('.stop').click(function(){ 2 $('.loader').css('animation-fill-mode','forwards'); 3});
次「無限に繰り返すことをやめる」ためにanimation-iteration-countを0にしてもできず、パッと消えてしまいます。
jQuery
1$('.stop').click(function(){ 2 $('.loader').css('animation-iteration-count',0); 3});
最後に「停止」はどうかと思ったのですがやはり一時停止するだけでした。
jQuery
1$('.stop').click(function(){ 2 $('.loader').css('animation-play-state','paused'); 3});
「ラスト一回だけ実行」に適切なプロパティはないのでしょうか?
もしできる方法がありましたら宜しくお願い致します。
■実行サンプル
https://jsfiddle.net/eg71ktnz/
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/24 11:37
2020/07/24 12:03
2020/07/24 15:37