2012-07-06 122 views
1

我想“位置是:固定”在移动设备上(I有Android之一) - 这不存在。
我通过创建两个div其高度求和以(使用JS)的屏幕的高度,并加入touch听众底部DIV伪造了。这些事件将调整scrollTop值。这是一个旧的“touchScroll.js”的副本。通过“touchmove”滚动是断断续续

滚动运作成功,我甚至加吊带的感觉。但是,与操作系统滚动窗口视图相比,整个滚动非常不连贯。

我已经读过随机的地方,并在这里添加-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0); css位来解决这个印章。我试图在div本身,身体上,只有背面部分,只有转换等...所有的排列......没有任何帮助。斩波仍然存在,并且花样出现在input停了我的键盘

我想在我的滚动一个创建一个内部的div,并代替调整scrollTop值,我只想通过使position:absolute移动内部的div并调整它的top。这没有什么区别。

有没有解决方案可以打败?
例子是在这里:http://mobile.phantasyrpg.com/so-example

+0

已结束为新手机禁用自定义JS。现代移动浏览器会自动处理可滚动的div,并且比我能找到的任何JS替代品都要好得多。 – Mikhail 2013-09-10 21:42:07

回答

1

不幸的是,可能没有一个解决方案,Android的浏览器被称为他们的渲染性能较差。不同的Android版本/设备/浏览器组合会显示不同的性能和兼容性,事实上,您的示例在我的Android 4.0.4 Chrome上运行得非常流畅,但在工厂浏览器上甚至无法正常运行。

作为一般规则,总是想用CSS变换,只有经过其他属性(如scrollTop的),作为转换往往硬件加速。 (就像iOS Mobile Safari和现代Android浏览器一样)。

我建议你尝试最新版本的TouchScrolliScroll,因为它们都使用CSS转换,并且可以包含其他优化为好。

-webkit-transform:translate3d(0,0,0);设置通常用于强制硬件加速,并且应该被改变/移动(在您的情况下,内容DIV)的元件上使用。但是,如果您使用新版本的滚动库,它们将会覆盖-webkit-transform属性。该-webkit-backface-visibility是唯一适当,如果也应用在元素上-webkit-transform,将其设置为hidden可以解决不必要的抖动,或可提供在某些情况下的性能增益。

+0

Touch Scroll示例根本不适用于我的手机。 – Mikhail 2012-07-07 00:21:53

+1

我能说什么?为iPhone开发? :) – atimb 2012-07-07 07:43:48

+1

这是一个网站。 – Mikhail 2012-07-07 16:29:43

0
-webkit-overflow-scrolling: touch; 

应该让事情更顺畅。不知道它是否适用于较旧的Android系统

+0

我会给它一个镜头。在寻找解决方案时从未看到过这一点 – Mikhail 2012-07-07 00:22:58