Javascript 安卓4.4与iOS上的CSS3过渡缓慢
我正在使用基于关键帧的CSS3动画在两个div之间滑动,bezier曲线为(.10、.70、.10,1),持续时间为400ms Android上的性能(在HTC One M8和S4上使用本机4.4网络视图和基于blink的人行横道进行了测试)极为简陋,且帧速率极低。从4s到5s,iOS上的性能非常完美,性能接近本地 有人能解释一下这可能是什么原因,以及如何纠正它的一些建议吗?是否需要使用基于javascript的动画解决方案,如VelocityJS 如果这个问题有点模糊,我表示歉意,但我不认为我在这个问题上添加大量的CSS关键帧规则会对任何人都有帮助,所以我省略了它 下面是一个简单的例子,它演示了我所说的内容 (在台式机上工作正常,但并不完美,在移动设备上根本不起作用) 下面是一段代码,它完成了幻灯片的逻辑部分:Javascript 安卓4.4与iOS上的CSS3过渡缓慢,javascript,android,ios,css,Javascript,Android,Ios,Css,我正在使用基于关键帧的CSS3动画在两个div之间滑动,bezier曲线为(.10、.70、.10,1),持续时间为400ms Android上的性能(在HTC One M8和S4上使用本机4.4网络视图和基于blink的人行横道进行了测试)极为简陋,且帧速率极低。从4s到5s,iOS上的性能非常完美,性能接近本地 有人能解释一下这可能是什么原因,以及如何纠正它的一些建议吗?是否需要使用基于javascript的动画解决方案,如VelocityJS 如果这个问题有点模糊,我表示歉意,但我不认为我
var $ = function (id) {
"use strict";
return document.getElementById(id);
},
slideOpts = {
sl: ['slin', 'slout'],
sr: ['srin', 'srout'],
popin: ['popin', 'noanim'],
popout: ['noanim', 'popout'],
noanim: ['noanim', 'noanim']
},
function Slide(slideType, vin, vout, callback) {
var vIn = $(vin),
vOut = $(vout),
onAnimationEnd = function () {
vOut.classList.add('hidden');
vIn.classList.remove(slideOpts[slideType][0]);
vOut.classList.remove(slideOpts[slideType][1]);
vOut.removeEventListener('webkitAnimationEnd', onAnimationEnd, false);
vOut.removeEventListener('animationend', onAnimationEnd);
};
if (slideType == 'noanim'){
vIn.classList.remove('hidden');
vOut.classList.add('hidden');
} else {
vOut.addEventListener('webkitAnimationEnd', onAnimationEnd, false);
vOut.addEventListener('animationend', onAnimationEnd);
if (callback && typeof (callback) === 'function') {
callback();
}
vIn.classList.remove('hidden');
vIn.classList.add(slideOpts[slideType][0]);
vOut.classList.add(slideOpts[slideType][1]);
}
你有没有一个复制这个的例子?这将有助于找出根本原因。可能是因为iOS有硬件加速,而Android没有。但不确定。是不是只有这个动画?您是否尝试过使用stock ease转换?如果股票有效,你可以通过媒体查询在手机上使用它。考虑到我在添加代码后没有收到回复,我会发布我的调查结果。用于向过渡添加深度并使其更真实地用于iOS页面交换动画的框阴影。Box shadow非常重,在iPhone4上速度很慢,在Android上几乎无法使用,但从4s到5s都能完美工作。如果有人能提出一种更有效的方法来添加和删除类,或者一条更平滑的曲线,我将非常感激。@Derek朕會功夫 你能引用安卓的帖子来说明这一点吗?我们也遇到了同样的问题和最坏的情况,我们需要向客户解释。欢迎任何引用。@JamesWong,让您知道您以前必须在AndroidManifest.xml中手动启用硬件加速,从4.1开始(我认为),这是默认值,要在所有平台上获得最佳结果,请参见:使用JSFIDLE链接修改了我的问题,以显示一个真实的示例以及一段代码,以保持愉快。