Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trigger CSS Animations in JavaScript

I don't know how to use JQuery, so I need a method which could trigger an animation using JavaScript only.

I need to call/trigger CSS Animation when the user scrolls the page.

function start() {    document.getElementById('logo').style.animation = "anim 2s 2s forward";    document.getElementById('earthlogo').style.animation = "anim2 2s 2s forward";  }
* {    margin: 0px;  }    #logo {    position: fixed;    top: 200px;    height: 200px;    width: 1000px;    left: 5%;    z-index: 4;    opacity: 0.8;  }    #earthlogo {    position: fixed;    top: 200px;    height: 120px;    align-self: center;    left: 5%;    margin-left: 870px;    margin-top: 60px;    z-index: 4;    opacity: 0.9;  }    @keyframes anim {    50% {      filter: blur(10px);      transform: rotate(-15deg);      box-shadow: 0px 0px 10px 3px;    }    100% {      height: 100px;      width: 500px;      left: 10px;      top: 10px;      box-shadow: 0px 0px 15px 5px rgba(0, 0, 0, 0.7);      background-color: rgba(0, 0, 1, 0.3);      opacity: 0.7;    }  }    @keyframes anim2 {    50% {      filter: blur(40px);      transform: rotate(-15deg);    }    100% {      height: 60px;      width: 60px;      left: 10px;      top: 10px;      margin-left: 435px;      margin-top: 30px;      opacity: 0.8;    }  }    #backstar {    position: fixed;    width: 100%;    z-index: 1;  }    #earth {    position: absolute;    width: 100%;    z-index: 2;    top: 300px;  }
<img src="logo.png" id="logo" onclick="start();">  <img src="earthlogo.gif" id="earthlogo" onscroll="start();">  <img src="earth.png" id="earth">  <img src="stars.jpg" id="backstar">
like image 550
Sid Avatar asked Jun 30 '17 12:06

Sid


People also ask

How to trigger a CSS animation in JavaScript?

To trigger CSS animations in JavaScript, we just add the class that is set to animate the keyframes in CSS. We add the @keyframes property with the animation we want to animate. It'll animate from the from styles to the to styles.

Does CSS animation use JavaScript?

CSS animations make it possible to do simple animations without JavaScript at all. JavaScript can be used to control CSS animations and make them even better, with little code.


2 Answers

The simplest method to trigger CSS animations is by adding or removing a class - how to do this with pure Javascript you can read here:

How do I add a class to a given element?

If you DO use jQuery (which should really be easy to learn in basic usage) you do it simply with addClass / removeClass.

All you have to do then is set a transition to a given element like this:

.el {     width:10px;     transition: all 2s; } 

And then change its state if the element has a class:

.el.addedclass {     width:20px; } 

Note: This example was with transition. But for animations its the same: Just add the animation on the element which has a class on it.

There is a similar question here: Trigger a CSS keyframe animation via scroll

like image 114
Blackbam Avatar answered Sep 27 '22 22:09

Blackbam


This is how you can use vanilla JavaScript to change/trigger an animation associated with an HTML element.

First, you define your animations in CSS.

@keyframes spin1 { 100% { transform:rotate(360deg); } } @keyframes spin2 { 100% { transform:rotate(-360deg); } } @keyframes idle { 100% {} } 

Then you use javascript to switch between animations.

document.getElementById('yourElement').style.animation="spin2 4s linear infinite"; 

Note: 'yourElement' is the target HTML element id that you wish to animate.

For example: <div id="yourElement"> ... </div> or <table id='yourElement'>...</table>

like image 30
Really Nice Code Avatar answered Sep 27 '22 22:09

Really Nice Code