2

我正在用相当多的 CSS 和一些 javascript 构建一个网站,但我在移动设备上的性能方面遇到了很多问题,尤其是在 ipad 和 iphone 上。

我尝试关闭 css 中的 box-shadow、text-shadow、radius 和 gradient 属性以及关闭所有 javascript,但它仍然严重滞后。关闭 javascript 并不能提高性能,尽管关闭这些 css 属性确实有所帮助。

更具体地说,当您尝试滚动并用手指松开时,滚动“粘”在您松开的位置。在较小的屏幕上放大和滚动也很糟糕,尤其是在 iphone 或 ipod 上。

确实感觉有些东西我忽略了。有什么线索吗?

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

4

2 回答 2

2

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

This page has 10 external Javascript scripts. Try combining them into one.
This page has 5 external stylesheets. Try combining them into one.
于 2012-09-28T10:09:23.900 回答
0
overflow : scroll;

是我的问题...

-webkit-overflow-scrolling: touch;

添加这条线使滚动平滑。

最初我认为这是多个 div 堆叠在一起的问题,但后来我对其进行了更彻底的研究,发现这个网站更详细地解释了 iOS 触摸行为: http ://remysharp.com/2012/05/24/问题与位置固定滚动在 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,例如overthrow

于 2012-09-28T12:23:31.037 回答