vue简单实现转盘抽奖
本文实例为大家分享了vue简单实现转盘抽奖的具体代码,供大家参考,具体内容如下
1.0思路整理
转盘抽奖很常见,之前也没写过,现在有空来写写,分析如下:
1.1转盘旋转-----可以用transform的rotate来解决
1.2旋转动画-----transition过渡来处理
1.3停留目标位置及中奖提示?------通过控制旋转角度控制停留位置,中奖提示,考虑添加回调
1.1开始行动
上面的思考,我们知道了大概要实现的步骤,首先我们搞张图片
这个圆盘有10份,每一份360/10=36deg,假设要停留在第二个---->20金币,顺时针(含初始位置并计为1),即共需要旋转(2-1)*36=36,这样,我们可以得出,停留位置需要旋转的角度=(target-1)*36。
1.2中奖回调
上面的步骤,我们知道了如何控制到目标位置,那接下来就是事件通知,起初想的是,固定转动时间,然后开启定时器计时,很显然不靠谱,有没有什么可以在动画结束后就通知呢?transitionend,我找到了这个事件,可以监听元素动画结束事件,只不过有些兼容这个好办
/** 动画结束事件兼容 **/ whichTransitionEvent(){ letel=document.createElement('span'), transitions={ 'transition':'transitionend', 'OTransition':'oTransitionEnd', 'MozTransition':'transitionend', 'WebkitTransition':'webkitTransitionEnd' }; for(lettintransitions){ if(el.style[t]!==undefined){ returntransitions[t]; } } el=null; }
2.0完整示例
控制转动位置和事件通知都找到方法了,接下来开干!
栗子:
完整代码
转盘抽奖