在Safari 8上,CSS translate3d非常容易上手

时间:2014-11-19 22:03:18

标签: javascript css safari transform parallax

我正在研究一个简单的视差行为,像Skrollr这样的库只会有点过分。我已经取得了一些非常棒的进步,并且在Chrome和Firefox中工作得非常漂亮,但在OSX Safari 8中运动看起来非常激动。

如果有人能够提供一些有关如何使这一切变得更加顺畅的见解,我很乐意听到它。我很惊讶在Safari中发生了这种情况,因为我预计Chrome会有类似的性能。

我发布了一个只包含重要部分的演示 - http://playground.philsmartdesign.com.au/work/requestAnimationFrame/

Javascript:

(function (window, document, $, undefined) {
    "use strict";

    var $window = $(window),
        $document = $(document);

    $document.ready(function () {

        var $image = $('#move-me');

        // Method 1 : Using requestAnimationFrame - very jumpy in Safari 8
        function raf_handler(timestamp) {
            move_image();
            window.requestAnimationFrame(raf_handler);
        }
        window.requestAnimationFrame(raf_handler);

        // Method 2 : Binding to scroll event - a little bit smoother, but still jumpy in Safari 8
        //$window.on('scroll', move_image);

        function move_image(){
            var transform = 'translate3d(0px,' + ($window.scrollTop() * 1.3) + 'px, 0px)'; // 3d transform
            //var transform = 'translate(0px,' + ($window.scrollTop() * 1.3) + 'px)'; // 2d transform
            $image[0].style.webkitTransform = transform;
            $image[0].style.MozTransform = transform;
            $image[0].style.msTransform = transform;
            $image[0].style.OTransform = transform;
            $image[0].style.transform = transform;
        }

    });

})(window, document, jQuery);

1 个答案:

答案 0 :(得分:0)

在Safari中它确实非常跳跃,就像其他任何东西一样...... 我建议尝试位置:绝对;和顶部:* px;