请考虑这段js代码:
function scroll(){
$('.container').css('marginLeft', '-50%');
$('.container').animate({'marginLeft': 0}, 300);
}
示例:http://jsfiddle.net/aSXBL/3/
Safari中有一种奇怪的行为 - 动画从“从右到左”而不是“从左到右”发生。经过一些分析后,我发现jQuery在这种情况下以正边距值开始动画。
你认为它应该被视为一个bug还是它只是Safari的特定“功能”?在这种情况下,解决方法可能会有什么帮助?
感谢。
答案 0 :(得分:0)
显然这是一个错误 - 百分比返回意外结果(实际上不仅与动画功能有关)。参见:
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
答案 1 :(得分:0)
我有同样的问题。修复使用CSS Transitions用于现代浏览器,jQuery为其余浏览器设置动画。我用modernizr来决定哪个服务。这使Safari 5使用CSS,从而避免了这个问题。
if( !Modernizr.csstransitions ){
$('#gallery .slides').animate({"margin-left":'-200%'}, 750);
} else {
$('#gallery .slides').css({"margin-left":'-200%'});
}
}