2012-03-05 62 views
2

我有以下代码片段,它将我的页面动画化为我的FrontPage上的特定点。这适用于所有浏览器和Android平板电脑。jquery animate scrollTop和scrollLeft不能同时在ipad上工作

if($("body").hasClass("mobile")){ 
    $scrollable.animate({scrollTop: getPosition()[0]}, scrollSpeed,scrollEffect); 
    $scrollable.animate({scrollLeft: getPosition()[1]}, scrollSpeed,scrollEffect); 
}else{ 
    $scrollable.animate({scrollTop: getPosition()[0],scrollLeft:getPosition()[1]},  scrollSpeed,scrollEffect); 
} 

当我在移动版本,scrollLeft和scrollTop不会同时工作。所以我将它们分开,这似乎在Android中工作,但不在Ipad设备(IOS)上。所以在上面的例子中,他会做scrollLeft而不是scrollTop(在ipad上)。另外他们完美地工作。所以我的问题是:

我该如何让iPad做这两个动画?

回答

1

似乎webkit只能在某些webkit版本上滚动$(“html”)元素,应警告,因为Webkit客户端的某些版本只有这种情况。 尝试:

$("html").animate({scrollLeft:100}) 

,而不是

$("body") 

我无法找到很多关于这个文件,但是这打破了一个网站,我前一阵子做,发现这个解决方案工作,如果我对闻WebKit和应用滚动动画而不是HTML中的身体....

希望它有助于

+0

对于那些在iOS模拟器中进行测试,我会添加类似的jQuery到这个模拟器不起作用,但在实际设备(iPhone 6,iOS 9.3.5)上工作得很好。 – ashack 2016-09-07 16:48:28

0

我的经验,当我开发我的插件同样的问题在(http://kirkas.ch/ascensor/)。

在ios浏览器中显然存在一个错误,当您在body/html(特别是绝对位置)上同时为scrollTop/scrollLeft设置动画时,请尝试为特定容器设置动画。

+0

可以确认,单独在body元素上动画scrollTop或scrollLeft在ios上工作正常,并且它们在一起看起来很棒 - 屏幕溅射和抖动,没有任何动作。只是想知道在问题中$ scrollable实际上是否是'body'元素。 – commonpike 2013-02-04 13:48:39

+0

-1提供的链接返回403 – marcgg 2014-01-20 08:25:25

+0

github:https://github.com/kirkas/Ascensor.js – jackocnr 2014-01-28 22:28:50

相关问题