jquery.crop.js android6,引用jqueryrotate.js 安卓机卡顿并有反转现象的问题

9f1c4ec77943?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

jqueryrotate.png

jqueryrotate => 传送门,它可以实现旋转效果,使用简单。jqueryrotate 支持所有主流浏览器,包括 IE6,所以很适合拿来写大转盘抽奖等功能。

基本使用方法 => 传送门

使用代码:

//旋转转盘 item:奖品位置

const rotateFn = function (item) {

//旋转停止角度,这里设置的是45°

var angles = item * (360 / turnplate.restaraunts.length) - (360 / (turnplate.restaraunts.length * 2));

if (angles < 270) {

angles = 270 - angles;

} else {

angles = 360 - angles + 270;

}

$('#wheelcanvas').stopRotate(); //停止旋转

$('#wheelcanvas').rotate({

angle: 0,

animateTo: angles + 2160, //旋转6圈停止

duration: 5000, //旋转5秒时间

callback: function () {

turnplate.bRotate = !turnplate.bRotate;

if (!Array.indexOf) {

Array.prototype.indexOf = function (obj) {

for (var i = 0; i < this.length; i++) {

if (this[i] == obj) {

return i;

}

}

return -1;

}

}

}

});

};

问题:

旋转方法正常触发,在ios微信浏览器上旋转效果正常,但是在部分安卓机微信浏览器上有卡顿,并偶尔会反转。

解决过程:

1.怀疑手机性能问题

解决方法:通过transform开启手机硬件加速,可以稍微解决卡顿问题,但是效果不佳,反转问题还是存在,并且开启硬件加速增加了手机的电量消耗 -----排除

//要旋转的元素添加

#wheelcanvas{

-webkit-transform: translateZ(0);

-moz-transform: translateZ(0);

-ms-transform: translateZ(0);

-o-transform: translateZ(0);

transform: translateZ(0);

-webkit-perspective: 1000; //3D元素距视图的距离,解决开启GPU硬件加速部分Android出现闪烁的bug

-moz-perspective: 1000;

-ms-perspective: 1000;

perspective: 1000;

}

2.怀疑设置的旋转初始角度angle: 0的问题

查阅了很多使用jqueryrotate做大转盘的,每个设置的差不多,不是90°就是0°,并且把一些网上的demo放在自己的手机也没出现这样的问题 -----排除

3.引入的jqueryrotate.js问题

自己引入的js文件是去年就下载的,没有版本说明,不知道是不是版本引起的,所以重新下载了一份2.3版本的放上去,反转问题依然存在 -----排除

4.用css替代js实现动画效果

用css做动画效果,不进可以保证兼容性,而且对手机性能也有保证 -----解决

替换代码:

$('#wheelcanvas').css({

transform:'rotate('+ anglesAll +'deg)',

transition: 'All 5s ease',

'-webkit-transition': 'All 5s ease'

})

setTimeout(function(){

turnplate.bRotate = !turnplate.bRotate;

if (!Array.indexOf) {

Array.prototype.indexOf = function (obj) {

for (var i = 0; i < this.length; i++) {

if (this[i] == obj) {

return i;

}

}

return -1;

}

}

$('#wheelcanvas').css({

transform:'rotate('+ angles +'deg)',

transition: 'All .1s',

'-webkit-transition': 'All .1s'

})

},5100)

注意:

底部设置的

$('#wheelcanvas').css({

transform:'rotate('+ angles +'deg)',

transition: 'All .1s',

'-webkit-transition': 'All .1s'

})

是因为第一次点击的时候,transform会记住设置的角度,当第二次点击时,如果得到的旋转角度是一样的,那么转盘是不会动的,所有要在转盘停止的时候重置transform的角度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值