javascript - 如何用CSS3实现减速动画
大家讲道理
大家讲道理 2017-04-11 11:07:53
[JavaScript讨论组]

http://jiangshanmeta.github.io/demo/myWork/mobile/lottery/

这是半成品的例子。
我想做的是一个抽奖盘。开始抽奖后 给抽奖盘添加转动动画并且把动画次数设为infinite(因为不知道向后端请求等待拿到结果需要多少时间)。我本来想后端返回结果后改变动画次数并且改变动画持续时间来实现减速,并且监听animationend事件通过transform+transition显示最终抽奖结果。但是减速过于突兀。

目前一个方案是接收到后台返回值之后,每转一圈增加一点animation-duration。求教有没有更好地解决方案。

下面是关键帧

@keyframes rotate {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);    
  }

  to {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);  
  }
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
迷茫

animation-timing-function

PHPz

全程使用transition,然后根据服务端返回值动态计算transform的角度,避免两个动画衔接。

transition: all 3s ease;

var result=Math.floor(Math.random() * 7) + 1; //如果没有返回数据给result赋个没有奖的默认值。
var angular=1080+Math.floor(result*45*(Math.random()));
指针.style.transform= "rotate("+ angular +"deg)"

你怕服务端返回慢可以让 mouseup 事件就触发 ajax。事实上动态改变 @keyframes 也是可以实现的,但是要麻烦许多。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号