我的网站在iPad / iPhone上非常滞后,删除了css-effects和JavaScript



我正在用相当多的CSS&一些javascript,但我在移动设备上的性能有很多问题,尤其是在ipad和iphone上。

我试过关闭css中的框阴影、文本阴影、半径和渐变属性,以及关闭所有javascript,但它仍然严重滞后。关闭javascript并不能大大提高性能,尽管关闭那些css属性确实有所帮助。

更具体地说,当你尝试滚动并用手指放开时,滚动会"粘"在你放开的地方。放大和滚动在较小的屏幕上也很糟糕,尤其是在iphone或ipod上。

我确实觉得有些事情我忽略了。有线索吗?

[我删除了网站,但我的回答更详细地显示了潜在的问题。迟缓的行为来自属性溢出:滚动]

运行YSlow!测验它给了我一些有趣的观点。。。

This page has 10 external Javascript scripts. Try combining them into one.
This page has 5 external stylesheets. Try combining them into one.
overflow : scroll;

是我的问题。。。

-webkit-overflow-scrolling: touch;

添加这一行使滚动变得平滑。

起初,我认为这是多个div堆叠在一起的问题,但后来我对其进行了更彻底的研究,发现了这个网站,它更详细地解释了iOS触摸行为:http://remysharp.com/2012/05/24/issues-with-position-fixed-scrolling-on-ios/

一个比我想象的简单得多的解决方案。


编辑:
没有那么快,现在我遇到了一些元素的显示问题。再次研究后发现:http://cantina.co/2012/03/06/ios-5-native-scrolling-grins-and-gothcas/

告诉我使用

-webkit-transform: translate3d(0,0,0);

在所有相关元素上
当我在我的一些元素上使用它时,这种方法起了作用,但它再次破坏了其他元素。现在,当我向下滚动时,页面大约需要3秒钟!加载以前不可见的内容。。。

我想这总比什么都没有好,尽管感觉Mobile Safari是新的Internet Explorer
将尝试找到另一个解决方案。。。

edit2:
我设法使它基本正常工作。它仍然有一些显示问题(我的元素后面的主背景仍然有2-3秒的加载问题),但至少我的其他元素可以立即看到。

我所做的是使用

-webkit-transform: translate3d(0,0,0);

在我最重要的(id#)元素之一上,而不是在文章中提到的所有相关元素上使用通用选择器*{}

为了与滚动行为向后兼容,他们提到了一个polyfill,比如翻转。

最新更新