0

请考虑这段 js 代码:

function scroll(){
    $('.container').css('marginLeft', '-50%');
    $('.container').animate({'marginLeft': 0}, 300);
}​

示例:http: //jsfiddle.net/aSXBL/3/

Safari 中有一个奇怪的行为——动画是从“从右到左”而不是“从左到右”发生的。经过一些分析,我发现 jQuery 在这种情况下以正边距值开始动画。

你认为它应该被视为一个错误还是它只是 Safari 的一个特定“功能”?在这种情况下,什么解决方法可能会有所帮助?

谢谢。

4

2 回答 2

0

我遇到过同样的问题。修复方法是为现代浏览器使用 CSS 过渡,为其余浏览器使用 jQuery 动画。我使用modernizr 来决定提供哪些服务。这使得 Safari 5 使用 CSS,从而避免了这个问题。

if( !Modernizr.csstransitions ){
  $('#gallery .slides').animate({"margin-left":'-200%'}, 750);
} else {
  $('#gallery .slides').css({"margin-left":'-200%'});
}
            }
于 2013-01-24T22:08:13.760 回答
0

显然这是一个错误 - 返回意外结果的百分比(实际上不仅与 animate 函数有关)。看:

console.log($('.container').css('marginLeft'));
// 10px as expected
$('.container').css('marginLeft', '-50%');
// object visually moved as expected
console.log($('.container').css('marginLeft'));
// this outputs 300px in Safari
于 2012-10-25T15:57:13.910 回答