Avatar of elepil
elepil
 asked on

A very simple (I think) CSS Animation/Transition issue with JQuery

In my code snippet, I am able to START the animation, and I am able to STOP the animation. My problem is with the RESTART where the expected behavior is to reset the animation back to the beginning and resume. But when I press the "Restart Me" button, the animation just continues unimpeded, as if I did nothing.

How can I make the animation abruptly abort and start from the beginning of the animation sequence?

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Changing color</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function(e) {
    $("#button1").click(function() {
		$(".mydiv").attr("id", "outerWrapper"); // add the id="outerWrapper", the trigger
    });
	$("#button2").click(function() {
		$(".mydiv").removeAttr("id", "outerWrapper");
	});
	$("#button3").click(function() {
		$(".mydiv").removeAttr("id", "outerWrapper").attr("id", "outerWrapper");
	});
});
</script>
<style>
.mydiv {
}
#outerWrapper {
	width: 100px;
	height: 100px;
	margin: 30px auto;
	background: red;
	position: absolute;
}
@-webkit-keyframes spotLightBG {
	0% { left: 500px; }
	100% {left: 100px; }
}
@-moz-keyframes spotLightBG {
	0% { left: 500px; }
	100% {left: 100px; }
}
@-o-keyframes spotLightBG {
	0% { left: 500px; }
	100% {left: 100px; }
}
@keyframes spotLightBG {
	0% { left: 500px; }
	100% {left: 100px; }
}
div#outerWrapper { // wherever 'animation' is defined, the selector will trigger the animation
	-webkit-animation: spotlightBG 10s infinite alternate;
	-moz-animation: spotlightBG 10s infinite alternate;
	-o-animation: spotlightBG 10s infinite alternate;
	animation: spotlightBG 10s infinite alternate;
}
</style>
</head>

<body>
<!--Notice that the id="outerWrapper" is not defined in the <div>; JQuery will add that. -->
<div class="mydiv">
testing
</div>
<input id="button1" type="button" value="Start Me"/>
<input id="button2" type="button" value="Stop Me"/>
<input id="button3" type="button" value="Restart Me"/>
</body>
</html>

Open in new window

CSSHTMLjQuery

Avatar of undefined
Last Comment
elepil

8/22/2022 - Mon
Gary

It's not simple because it's not possible with just css.
You would be better sticking with pure jquery to do the animation and forget css animations, they are not advanced enough for things like this.
ASKER CERTIFIED SOLUTION
Gary

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
elepil

ASKER
Thanks!
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy