jq如何让css3动画停止,jq中stop()方法停止不了css中animation

css动画和jquery动画基本上是两套东西,jquery的stop只能停止jquery的动画(至于为什么不能停你得了解js动画原理)

你的需求是没法用css动画实现的,控制不了那么细,得完全用js动画

查了下mdn,好像火狐上有些api可以控制css动画

以下代码仅火狐可用,且在about:config中开启dom.animations-api-getAnimations.enabled和dom.animations-api.timelines.enabled

Title

@keyframes zhuan {

100% {

transform: rotate(360deg)

}

}

.shanye {

animation: zhuan 4s infinite linear forwards;

transform-origin: 15px 115px;

border-radius: 50%;

width: 30px;

height: 30px;

position: absolute;

background: skyblue;

left: calc(50% - 15px);

top: -15px

}

低速

中速

高速

var slow = document.getElementById('slow');

var middle = document.getElementById('middle');

var high = document.getElementById('high');

var shanye = document.getElementById('shanye');

slow.onmouseenter = function () {

const progress = shanye.getAnimations()[0].effect.getComputedTiming().progress;

shanye.getAnimations()[0].effect.updateTiming({iterationStart: progress, duration: 8000});

shanye.getAnimations()[0].startTime=document.timeline.currentTime

};

middle.onmouseenter = function () {

const progress = shanye.getAnimations()[0].effect.getComputedTiming().progress;

shanye.getAnimations()[0].effect.updateTiming({iterationStart: progress, duration: 4000});

shanye.getAnimations()[0].startTime=document.timeline.currentTime

};

high.onmouseenter = function () {

const progress = shanye.getAnimations()[0].effect.getComputedTiming().progress;

shanye.getAnimations()[0].effect.updateTiming({iterationStart: progress, duration: 2000});

shanye.getAnimations()[0].startTime=document.timeline.currentTime

};

随便找了个js动画库写了个js动画,这个应该大部分浏览器都能正常展示(研究了下jquey动画没有想到简单方法做这个需求)

Title

.shanye {

/*animation: zhuan 4s infinite linear forwards;*/

transform-origin: 15px 115px;

border-radius: 50%;

width: 30px;

height: 30px;

position: absolute;

background: skyblue;

left: calc(50% - 15px);

top: -15px

}

低速

中速

高速

var slow = document.getElementById('slow');

var middle = document.getElementById('middle');

var high = document.getElementById('high');

var shanye = document.getElementById('shanye');

var myAnimation = TweenMax.to('.shanye', 2, {rotation: 360, repeat: Number.POSITIVE_INFINITY, ease: 'linear'});

// console.log(test);

slow.onmouseenter = function () {

const progress = myAnimation.progress();

myAnimation.duration(8).progress(progress);

};

middle.onmouseenter = function () {

const progress = myAnimation.progress();

myAnimation.duration(4).progress(progress);

};

high.onmouseenter = function () {

const progress = myAnimation.progress();

myAnimation.duration(2).progress(progress);

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值