前提・実現したいこと
CSSでぶるぶる震えるアニメーションを作っています。
「start」のクリックで、これを何度も発生するようにしたいです。
発生している問題・エラーメッセージ
アニメーションが1回目しか効きません
該当のソースコード
html
1<div class="box"></div> 2<button type="button" class="start">start</button>
jQuery
1$('.start').click(function(){ 2 $('.box').removeClass('shake'); 3 $('.box').addClass('shake'); 4});
css
1.box { 2 background: red; 3 width: 50px; 4 height: 50px; 5} 6 7.shake { 8 -webkit-animation-duration: .5s; 9 animation-duration: .5s; 10 -webkit-animation-fill-mode: both; 11 animation-fill-mode: both; 12 -webkit-animation-name: shake; 13 animation-name: shake; 14} 15 16@-webkit-keyframes shake { 17 from, 18 to { 19 -webkit-transform: translate3d(0, 0, 0); 20 transform: translate3d(0, 0, 0); 21 } 22 23 10%, 24 30%, 25 50%, 26 70%, 27 90% { 28 -webkit-transform: translate3d(-10px, 0, 0); 29 transform: translate3d(-10px, 0, 0); 30 } 31 32 20%, 33 40%, 34 60%, 35 80% { 36 -webkit-transform: translate3d(10px, 0, 0); 37 transform: translate3d(10px, 0, 0); 38 } 39} 40 41@keyframes shake { 42 from, 43 to { 44 -webkit-transform: translate3d(0, 0, 0); 45 transform: translate3d(0, 0, 0); 46 } 47 48 10%, 49 30%, 50 50%, 51 70%, 52 90% { 53 -webkit-transform: translate3d(-10px, 0, 0); 54 transform: translate3d(-10px, 0, 0); 55 } 56 57 20%, 58 40%, 59 60%, 60 80% { 61 -webkit-transform: translate3d(10px, 0, 0); 62 transform: translate3d(10px, 0, 0); 63 } 64} 65
試したこと
思いつきですが、クリックを分けて実行してみたらなぜか動作しました。
つまり以下「remove」と「add」に分けて、「remove」をクリックしてから、「add」をクリックすると動作するんです。
なぜこれで動作するのに、上記の「start」のクリックの一括指定では動作しないのかわかりません。
html
1<div class="box"></div> 2<button type="button" class="start">start</button> 3 4<button type="button" class="remove">remove</button> 5<button type="button" class="add">add</button>
jQuery
1$('.start').click(function(){ 2 $('.box').removeClass('shake'); 3 $('.box').addClass('shake'); 4}); 5 6$('.remove').click(function(){ 7 $('.box').removeClass('shake'); 8}); 9 10$('.add').click(function(){ 11 $('.box').addClass('shake'); 12}); 13
「start」のクリックだけで、何度も動作させるにはどのようにすべきでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/13 23:38