How do I invoke the animation again when state stays the same
up vote
1
down vote
favorite
I am figuring out how I can re-animate the shake animation on an incorrect answer. Or the flash animation on a correct answer.
I defined 2 booleans as a state for the correct answer and I understand that if I enter the same incorrect answer the incorrect flash stays false. But how do I fix that the shake animations kicks in another time.
I made a fiddle, the correct code is '1234'. When you first fail to enter, the shake animation kicks in. Same is for the correct answer. Only the first time the animations shows.
How can I invoke the animations again when correct or incorrect answers are given.
<div class="alert alert-danger animated"
v-bind:class=" 'shake': incorrect "
v-if="incorrect">
Code is incorrect
</div>
https://jsfiddle.net/mrklein/05sfmuc2/
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
,
methods:
checkpwd: function(todo)
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
);
vue.js animate.css
add a comment |
up vote
1
down vote
favorite
I am figuring out how I can re-animate the shake animation on an incorrect answer. Or the flash animation on a correct answer.
I defined 2 booleans as a state for the correct answer and I understand that if I enter the same incorrect answer the incorrect flash stays false. But how do I fix that the shake animations kicks in another time.
I made a fiddle, the correct code is '1234'. When you first fail to enter, the shake animation kicks in. Same is for the correct answer. Only the first time the animations shows.
How can I invoke the animations again when correct or incorrect answers are given.
<div class="alert alert-danger animated"
v-bind:class=" 'shake': incorrect "
v-if="incorrect">
Code is incorrect
</div>
https://jsfiddle.net/mrklein/05sfmuc2/
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
,
methods:
checkpwd: function(todo)
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
);
vue.js animate.css
I see you're using animate.css with vue.js. I'd recommend you looking into use Vue transitions vuejs.org/v2/guide/transitions.html and perhaps github.com/asika32764/vue2-animate, as you have to keep the state of your animations in the logic of your code.
– cal_br_mar
Nov 9 at 21:09
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I am figuring out how I can re-animate the shake animation on an incorrect answer. Or the flash animation on a correct answer.
I defined 2 booleans as a state for the correct answer and I understand that if I enter the same incorrect answer the incorrect flash stays false. But how do I fix that the shake animations kicks in another time.
I made a fiddle, the correct code is '1234'. When you first fail to enter, the shake animation kicks in. Same is for the correct answer. Only the first time the animations shows.
How can I invoke the animations again when correct or incorrect answers are given.
<div class="alert alert-danger animated"
v-bind:class=" 'shake': incorrect "
v-if="incorrect">
Code is incorrect
</div>
https://jsfiddle.net/mrklein/05sfmuc2/
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
,
methods:
checkpwd: function(todo)
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
);
vue.js animate.css
I am figuring out how I can re-animate the shake animation on an incorrect answer. Or the flash animation on a correct answer.
I defined 2 booleans as a state for the correct answer and I understand that if I enter the same incorrect answer the incorrect flash stays false. But how do I fix that the shake animations kicks in another time.
I made a fiddle, the correct code is '1234'. When you first fail to enter, the shake animation kicks in. Same is for the correct answer. Only the first time the animations shows.
How can I invoke the animations again when correct or incorrect answers are given.
<div class="alert alert-danger animated"
v-bind:class=" 'shake': incorrect "
v-if="incorrect">
Code is incorrect
</div>
https://jsfiddle.net/mrklein/05sfmuc2/
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
,
methods:
checkpwd: function(todo)
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
);
vue.js animate.css
vue.js animate.css
asked Nov 9 at 20:54
MrKlein
282
282
I see you're using animate.css with vue.js. I'd recommend you looking into use Vue transitions vuejs.org/v2/guide/transitions.html and perhaps github.com/asika32764/vue2-animate, as you have to keep the state of your animations in the logic of your code.
– cal_br_mar
Nov 9 at 21:09
add a comment |
I see you're using animate.css with vue.js. I'd recommend you looking into use Vue transitions vuejs.org/v2/guide/transitions.html and perhaps github.com/asika32764/vue2-animate, as you have to keep the state of your animations in the logic of your code.
– cal_br_mar
Nov 9 at 21:09
I see you're using animate.css with vue.js. I'd recommend you looking into use Vue transitions vuejs.org/v2/guide/transitions.html and perhaps github.com/asika32764/vue2-animate, as you have to keep the state of your animations in the logic of your code.
– cal_br_mar
Nov 9 at 21:09
I see you're using animate.css with vue.js. I'd recommend you looking into use Vue transitions vuejs.org/v2/guide/transitions.html and perhaps github.com/asika32764/vue2-animate, as you have to keep the state of your animations in the logic of your code.
– cal_br_mar
Nov 9 at 21:09
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
What you need to do is have another variable be the control for the animation. You'd reset that variable after the duration of the animation. I just put 1000 ms in my example. You may need to debounce a double click if you really want it to be perfect (ie, if they click while the animation is going on, you don't really want to do another animation but maybe you do?).
https://jsfiddle.net/lucuma/zawk41gh/
<div id="app" class="card" style="width:18rem;">
<div class="card-body">
<div class="alert alert-danger animated"
v-bind:class=" 'shake': runAnimate "
v-if="incorrect">
Code is incorrect
</div>
<div class="alert alert-success animated"
v-bind:class=" 'flash': runAnimate "
v-if="correct">
Correct code entered
</div>
<input v-model="modelcode" placeholder="password" class="form-control">
<button class="btn btn-primary mt-3" @click="checkpwd">check</button>
correct code is 1234
</div>
</div>
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
runAnimate: false
,
methods:
checkpwd: function(todo)
this.runAnimate= true;
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
setTimeout(()=> this.runAnimate = false, 1000);
);
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
What you need to do is have another variable be the control for the animation. You'd reset that variable after the duration of the animation. I just put 1000 ms in my example. You may need to debounce a double click if you really want it to be perfect (ie, if they click while the animation is going on, you don't really want to do another animation but maybe you do?).
https://jsfiddle.net/lucuma/zawk41gh/
<div id="app" class="card" style="width:18rem;">
<div class="card-body">
<div class="alert alert-danger animated"
v-bind:class=" 'shake': runAnimate "
v-if="incorrect">
Code is incorrect
</div>
<div class="alert alert-success animated"
v-bind:class=" 'flash': runAnimate "
v-if="correct">
Correct code entered
</div>
<input v-model="modelcode" placeholder="password" class="form-control">
<button class="btn btn-primary mt-3" @click="checkpwd">check</button>
correct code is 1234
</div>
</div>
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
runAnimate: false
,
methods:
checkpwd: function(todo)
this.runAnimate= true;
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
setTimeout(()=> this.runAnimate = false, 1000);
);
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
add a comment |
up vote
2
down vote
accepted
What you need to do is have another variable be the control for the animation. You'd reset that variable after the duration of the animation. I just put 1000 ms in my example. You may need to debounce a double click if you really want it to be perfect (ie, if they click while the animation is going on, you don't really want to do another animation but maybe you do?).
https://jsfiddle.net/lucuma/zawk41gh/
<div id="app" class="card" style="width:18rem;">
<div class="card-body">
<div class="alert alert-danger animated"
v-bind:class=" 'shake': runAnimate "
v-if="incorrect">
Code is incorrect
</div>
<div class="alert alert-success animated"
v-bind:class=" 'flash': runAnimate "
v-if="correct">
Correct code entered
</div>
<input v-model="modelcode" placeholder="password" class="form-control">
<button class="btn btn-primary mt-3" @click="checkpwd">check</button>
correct code is 1234
</div>
</div>
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
runAnimate: false
,
methods:
checkpwd: function(todo)
this.runAnimate= true;
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
setTimeout(()=> this.runAnimate = false, 1000);
);
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
What you need to do is have another variable be the control for the animation. You'd reset that variable after the duration of the animation. I just put 1000 ms in my example. You may need to debounce a double click if you really want it to be perfect (ie, if they click while the animation is going on, you don't really want to do another animation but maybe you do?).
https://jsfiddle.net/lucuma/zawk41gh/
<div id="app" class="card" style="width:18rem;">
<div class="card-body">
<div class="alert alert-danger animated"
v-bind:class=" 'shake': runAnimate "
v-if="incorrect">
Code is incorrect
</div>
<div class="alert alert-success animated"
v-bind:class=" 'flash': runAnimate "
v-if="correct">
Correct code entered
</div>
<input v-model="modelcode" placeholder="password" class="form-control">
<button class="btn btn-primary mt-3" @click="checkpwd">check</button>
correct code is 1234
</div>
</div>
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
runAnimate: false
,
methods:
checkpwd: function(todo)
this.runAnimate= true;
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
setTimeout(()=> this.runAnimate = false, 1000);
);
What you need to do is have another variable be the control for the animation. You'd reset that variable after the duration of the animation. I just put 1000 ms in my example. You may need to debounce a double click if you really want it to be perfect (ie, if they click while the animation is going on, you don't really want to do another animation but maybe you do?).
https://jsfiddle.net/lucuma/zawk41gh/
<div id="app" class="card" style="width:18rem;">
<div class="card-body">
<div class="alert alert-danger animated"
v-bind:class=" 'shake': runAnimate "
v-if="incorrect">
Code is incorrect
</div>
<div class="alert alert-success animated"
v-bind:class=" 'flash': runAnimate "
v-if="correct">
Correct code entered
</div>
<input v-model="modelcode" placeholder="password" class="form-control">
<button class="btn btn-primary mt-3" @click="checkpwd">check</button>
correct code is 1234
</div>
</div>
new Vue(
el: "#app",
data:
correct: false,
incorrect: false,
code: '1234',
modelcode: '',
runAnimate: false
,
methods:
checkpwd: function(todo)
this.runAnimate= true;
if (this.modelcode == this.code)
this.correct = true;
this.incorrect = false;
else
this.correct = false;
this.incorrect = true;
setTimeout(()=> this.runAnimate = false, 1000);
);
edited Nov 9 at 21:39
answered Nov 9 at 21:21
lucuma
16.7k45479
16.7k45479
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
add a comment |
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
Thanks, always have the feeling using setTimeout for these kind of situations is a kind of a hack. But it works.
– MrKlein
Nov 11 at 12:54
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
You need to delay the resetting of the animation (removing the variable) for the length of the animation. Nothing wrong with the setTimeout per se.
– lucuma
Nov 12 at 13:50
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53233139%2fhow-do-i-invoke-the-animation-again-when-state-stays-the-same%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I see you're using animate.css with vue.js. I'd recommend you looking into use Vue transitions vuejs.org/v2/guide/transitions.html and perhaps github.com/asika32764/vue2-animate, as you have to keep the state of your animations in the logic of your code.
– cal_br_mar
Nov 9 at 21:09