9

Let's say we have an animation like here: http://jsfiddle.net/utterstep/JPDwC/

Layout:

<div>back</div>
<div class="animating"></div>
<div>forward</div>

And corresponding CSS:

@keyframes someanimation {
    0% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
    100% {
        width: 100px;
    }
}

.animating {
    width: 200px;
    height: 200px;
    background-color: red;
    animation: someanimation 5s infinite;
}

And I want to go to the next or previous animation state when I press back or forward. There can be more than one object and I would like to switch their animation states at the same time.

Is it someway possible via CSS or CSS+JS, or it maybe it will be easier for me just to rewrite my code in pure-JS? (currently I don't like this idea because I have a lot of properties to animate and CSS makes it much more easier for me)

6
  • What do you mean by "previous" and "next" animate state? Do you have any play/pause button to toggle the animation state? Commented Jul 15, 2013 at 3:19
  • Try this Or This Commented Jul 15, 2013 at 4:07
  • @Passerby sorry for ambiguity. I wonder if I somehow jump to next defined state (eg. I'm at 0%, or maybe 13%, and when I press "next", I want to get to the 50% state). Commented Jul 15, 2013 at 5:12
  • Whats the goal of this? Do you mean 'now animate another element' or do you really want to animate only that particular element? If so, then make different css classes (.stage1, .stage2 ...) and switch it via JS Commented Jul 15, 2013 at 10:39
  • 1
    @DavidFariña I'm trying to make my own carousel script, beacuse I hadn't found any realisation that fits my needs. Animation of every element in carousel is simillar, it just differs in timing. So if we want just automatic carousel it's nice approach and it works great! But if we need to switch to the next element on arrow pressed - here we are with my need to go to the selected keyframe. Commented Jul 15, 2013 at 11:02

1 Answer 1

0

Perhaps you have got the answer in CSS+JS as shown in Old Post

However, there is a way with CSS only, check this Fiddle I have tweaked with :hover property, copy and use the concept as per your requirement.

@-webkit-keyframes someanimation {
    0% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
    100% {
        width: 100px;
    }
}

@-moz-keyframes someanimation {
    0% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
    100% {
        width: 100px;
    }
}

@keyframes someanimation {
    0% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
    100% {
        width: 100px;
    }
}



@-webkit-keyframes someani2 {
    0%,100% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
}

@-moz-keyframes someani2 {
    0%,100% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
}

@keyframes someani2 {
    0%,100% {
        width: 100px;
    }
    50% {
        width: 200px;
    }
}



.animating {
    width: 200px;
    height: 200px;
    background-color: red;
    -webkit-animation: someanimation 5s infinite;
    -moz-animation: someanimation 5s infinite;
    animation: someanimation 5s infinite;
}
.animating:hover{
    color:#f60;
    -webkit-animation: someani2 6s 1;
    -moz-animation: someani2 6s 1;
    animation: someani2 6s 1;
}
<div>back</div>
<div class="animating"></div>
<div>forward</div>

it changes the animation on hover, just like back button.

I hope this will solve your purpose..

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.