Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安卓4.4与iOS上的CSS3过渡缓慢_Javascript_Android_Ios_Css - Fatal编程技术网

Javascript 安卓4.4与iOS上的CSS3过渡缓慢

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 如果这个问题有点模糊,我表示歉意,但我不认为我

我正在使用基于关键帧的CSS3动画在两个div之间滑动,bezier曲线为(.10、.70、.10,1),持续时间为400ms

Android上的性能(在HTC One M8和S4上使用本机4.4网络视图和基于blink的人行横道进行了测试)极为简陋,且帧速率极低。从4s到5s,iOS上的性能非常完美,性能接近本地

有人能解释一下这可能是什么原因,以及如何纠正它的一些建议吗?是否需要使用基于javascript的动画解决方案,如VelocityJS

如果这个问题有点模糊,我表示歉意,但我不认为我在这个问题上添加大量的CSS关键帧规则会对任何人都有帮助,所以我省略了它

下面是一个简单的例子,它演示了我所说的内容

(在台式机上工作正常,但并不完美,在移动设备上根本不起作用)

下面是一段代码,它完成了幻灯片的逻辑部分:

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链接修改了我的问题,以显示一个真实的示例以及一段代码,以保持愉快。