animate

控制动画暂停和播放逻辑

通过style.animationPlayState来控制:

    let elem = document.querySelector('.animation');
	let state = elem.style['animationPlayState'];
	  
	if(state === 'paused') {
	    elem.style['animationPlayState'] = 'running';
	    btn.innerText = 'stop';
	} else {
	    elem.style['animationPlayState'] = 'paused';
	    btn.innerText = 'play';
	}

上下不停浮动

.ghost {
  animation: float 3s ease-out infinite;
}

@keyframes float {
  50% {
     transform: translate(0, 20px);
  }
}

参考:CodePen Demo

旋转

animation:  rotate 3s  linear  infinite;

防抖

没错,css动画也可以给按钮增加防抖,参考例子:https://mpfeow.csb.app/

其核心逻辑其实是通过样式来:

.submitBtn {
  animation: throttle 0.3s step-end forwards;
}
.submitBtn:active {
  animation: none;
}
@keyframes throttle {
  from {
    pointer-events: none;
  }
  to {
    pointer-events: all;
  }
}