css3动画能通过javascript控制变速播放吗?

发布于 2022-09-04 07:15:22 字数 300 浏览 14 评论 0

需求:

我有一段10s的动画,内容是使一个小球由0运动到1000的位置,
在0-10s之内的某秒,点击一下小球,
使得剩下的动画内容以原来速度的2倍播放;

需求解释:

比如,小球运动了5s,既运动到了500的位置,然后我点击了一下小球;
剩下的500距离我希望2.5s播放完成;

问题:

单纯靠css3动画+js控制能否实现,应该查哪个api?
不考虑canvas,因为canvas有尺寸限制;
另我已知gsap能够通过timelite实现,所以仅限探讨css3的控制;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

手心的温暖 2022-09-11 07:15:22

try transformjs

like this
demo

南城旧梦 2022-09-11 07:15:22

animation 是一个css属性,当然可以用js控制了。

animationtranstion一样,内有多个属性,例如 animation-name, duration等等。

例如改变animation动画名:

document.getElementById('#id').style.animationName = 'newName';

这种需求感觉改变animation name比较简单。

不过js里面好像很多浏览器要加前缀,你去caniuse查一下。

蓝海似她心 2022-09-11 07:15:22

可行的。

这个效果?
https://jsfiddle.net/5m24vL98/

吃素的狼 2022-09-11 07:15:22

可以用js控制 看看animation中的内容 对你有帮助

征棹 2022-09-11 07:15:22

获取到style标签里的内容,设置一个新的keyframes,这个left是当前点击的时候的对象的left值.
之后再将设置新的animation值,代码看链接吧
动画

冷血 2022-09-11 07:15:22
function transform(el,v,start,end){
    el.trans = {
        v:v,
        start:start,
        now:"",
        stop:""
    }
    var i=0;
    var num = 100;
    //计算定时器间隔
    var time = (end-start)/(v*num);
    var el.stop = setIntervel(function(){
        i++;
        //当前设置位置
        now = i*time;
        if(now>=end){
        now = end
        setInterval(el.stop)
        }
        el.style.transform ="translateX"+ now+"px";
        el.now = now;
    },time)
}
el.onclick = function(){
     setInterval(el.stop);
     transform(el,v/2,el.now,end){    
}

大概是这么个思路吧。有问题你调一下。过渡过程有卡顿用3d加transition

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文