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 |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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