每次点击触发相同的CSS动画

obr*_*ezy 4 javascript css jquery

我正在尝试触发CSS动画onclick,但是每次单击后都要重新启动它。我知道我可以打开和关闭动画,但是我想每次单击按钮时都触发动画。另外,最初CSS动画不应运行。仅在单击时运行。

这是我的笔。 http://codepen.io/omarel/pen/JRwpZp

HTML:

<a href="#" class="addtocart">click me</a>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

 $('.addtocart').click(function () {  
     $(this).addClass('on');
 }); 
Run Code Online (Sandbox Code Playgroud)

CSS:

.addtocart {
    position: relative;
}

    .addtocart.on {
        -webkit-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
        -moz-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
        -ms-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
        -o-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
        animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
    }

@keyframes cartbtnFade {
    0% {
        opacity: 0;
        transform: translateY(-100%);
    }

    10% {
        transform: translateY(-100%);
    }

    15% {
        transform: translateY(0);
    }

    30% {
        transform: translateY(-50%);
    }

    40% {
        transform: translateY(0%);
    }

    100% {
        opacity: 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 5

您可以在动画结束时收听,然后删除“ on”类

var animationEvent = 'webkitAnimationEnd oanimationend msAnimationEnd animationend';
$('.addtocart').click(function () { 
  $(this).addClass('on');
  $(this).one(animationEvent, function(event) {
    $(this).removeClass('on')
  });
}); 
Run Code Online (Sandbox Code Playgroud)

var animationEvent = 'webkitAnimationEnd oanimationend msAnimationEnd animationend';
$('.addtocart').click(function () { 
  $(this).addClass('on');
  $(this).one(animationEvent, function(event) {
    $(this).removeClass('on')
  });
}); 
Run Code Online (Sandbox Code Playgroud)
$('.addtocart').click(function () { 
  $(this).addClass('on');
  $(this).one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(event) {
    $(this).removeClass('on')
  });
}); 
Run Code Online (Sandbox Code Playgroud)
.addtocart {
		position:relative;
  width:100px;
  display:block;
  background-color:#000;
  color:#fff;
  padding:10px;
  text-align:center;
	}
	.addtocart.on {
    -webkit-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
    -moz-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
    -ms-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
    -o-animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
    animation: cartbtnFade 0.6s 0.1s 1 linear alternate;
	}

@keyframes cartbtnFade {
  0% {
    opacity: 0;
    transform:translateY(-100%);
  }
  10% {
  	transform:translateY(-100%);

  }
  15% {
	  transform:translateY(0);
	}
	30% {
	  transform:translateY(-50%);
	  
	}
	40% {
	  	transform:translateY(0%);

	}
  100% {
    opacity: 1;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 只需在点击http://codepen.io/anon/pen/WGLzNw的内部使用`.one`函数 (2认同)