【发布时间】:2015-01-17 14:59:29
【问题描述】:
我正在研究一个简单的视差行为,像 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);
【问题讨论】:
-
我有同样的问题,有什么解决方法吗?在 Safari 中似乎是一个非常具体的问题:/
标签: javascript css safari transform parallax