Behseini
Behseini

Reputation: 6330

How to add an animation class to a div

Hovering over the red box is adding a sweep to top blue color animation to the box but I would like to add this function by set-timeout function without hover. Why is this not working?

setTimeout(function() {
  $('.hvr-sweep-to-top').addClass('add');
}, 8000);
.hvr-sweep-to-top {
  height: 150px;
  width: 150px;
  background: red;
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: perspective(1px) translateZ(0);
  transform: perspective(1px) translateZ(0);
  box-shadow: 0 0 1px transparent;
  position: relative;
  -webkit-transition-property: color;
  transition-property: color;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
}

.hvr-sweep-to-top:before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #2098D1;
  -webkit-transform: scaleY(0);
  transform: scaleY(0);
  -webkit-transform-origin: 50% 100%;
  transform-origin: 50% 100%;
  -webkit-transition-property: transform;
  transition-property: transform;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
}

.hvr-sweep-to-top:hover:before,
.hvr-sweep-to-top:focus:before,
.hvr-sweep-to-top:active:before {
  -webkit-transform: scaleY(1);
  transform: scaleY(1);
}

.add {
  -webkit-transform: scaleY(1);
  transform: scaleY(1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="hvr-sweep-to-top">

</div>

Upvotes: 1

Views: 44

Answers (2)

vikrant
vikrant

Reputation: 2287

The class which you are adding is just a hover class. You have to add the script at the bottom of the page, and add it under document.ready function. here the color will change to blue after two seconds:

$( document ).ready(function() {
setTimeout(function() {
$('.hvr-sweep-to-top').addClass('new');
}, 2000);
});
  .hvr-sweep-to-top {
  height: 150px;
  width: 150px;
  background: red;
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: perspective(1px) translateZ(0);
  transform: perspective(1px) translateZ(0);
  box-shadow: 0 0 1px transparent;
  position: relative;
  -webkit-transition-property: color;
  transition-property: color;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
}

.new:before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #2098D1;
  -webkit-transform: scaleY(0);
  transform: scaleY(1);
  -webkit-transform-origin: 50% 100%;
  transform-origin: 50% 100%;
  -webkit-transition-property: transform;
  transition-property: transform;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
}



.add {
  -webkit-transform: scaleY(1);
  transform: scaleY(1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
 
  
  

  

  
</head>
<body>

<div class="hvr-sweep-to-top">


</body>
</html>

Upvotes: 2

Nero Phung
Nero Phung

Reputation: 109

Try to add

var someTxt = setTimeout(function() {
  $('.hvr-sweep-to-top').addClass('add');
}, 8000);

I'm not sure!

Upvotes: 0

Related Questions