2

我正在开发一个用于移动/触摸设备部署的 HTML5 应用程序,并且正在使用 PhoneGap,目前仅针对 iOS 平台(Webkit)。

我的问题发生在 CSS3 转换(它也发生在常规的 jQuery 动画上),因为 Webkit 往往会做一些奇怪的事情。例如,在可在此处查看的代码( http://jsfiddle.net/lvl99/dSjcj/ ) 中,当您单步浏览页面时,按顺序返回(即从第 5 页到第 1 页)将呈现动画效果,但是向前走(即从第 1 页到第 5 页)会产生不一致的渲染,主要是在丑陋的一面(记得在 Safari 中查看它。我一直在使用 Safari 5.1.7)。

我最初使用 jQuery Mobile 框架进行开发,但我使用的关键功能是通过主题标签和转换的页面路由,但由于我遇到了转换的这些问题,我尝试开发一个更简单的解决方案来避免任何 JS/CSS与 jQM 冲突。唉,我提出的错误可能实际上与 Safari/Webkit 相关。

我最初使用jQuery.animate()left属性,到现在使用transform类似于jQM处理方式的CSS3技术,也是为了帮助提高速度并测试它是否更愿意正确渲染。两者都没有工作到不同程度的不工作。

幸运的是,Firefox 渲染一切正常。它没有问题,但是 Firefox 不是目标平台,当项目在 PhoneGap 环境中的 Xcode 中编译时,它表达了与 Safari 相同的问题。当我还在使用早期开发版本的 jQM 时,Safari 会很好地渲染它(包括 iPad 模拟器上的 Safari),但 UIWebView 不会。这让我觉得这可能是 Nitro JS 引擎问题(例如,也许 UIWebView 没有正确渲染过渡的速度/能力/能力——我试图将所有动画转移到 CSS3 以降低渲染对 GPU 的操作)。

我使用过各种插件,如jQuery TransitjQuery Animate EnhancedTransformJS。我还尝试在 jQM 中编写我自己的自定义转换处理程序,但它没有正确呈现(尽管它最接近:在 Firefox 和 Safari 中工作,只是在 UIWebView 中不工作)。

关于转换具有不同类型内容的元素,我也得到了不一致的结果:视频、图像、浮动元素、多个段落都是我测试过的。在某个阶段,与序列的末端(即 1 和 5)之间的转换也存在问题,但现在我的问题只是升序页面转换(即 1 到 5)。

我已经为此花费了几天时间,试图解决这个看似很小的问题,但它对于用户体验来说是不可或缺的,这种幻灯片转换是基于用户在应用程序中移动的方向的上下文。最简单的解决方案是仅删除转换,但如果有某种方法可以了解 Webkit/UIWebView 到底遇到了什么问题,请为其创建一些解决方案。毫无疑问,这也与 jQM 在转换中遇到的闪烁问题有关。网络上为这些人建议的许多 CSS 修复也不起作用,例如-webkit-backface-visibility: hidden设置默认转换属性-webkit-transform: rotateX(0)

4

1 回答 1

2

看起来问题在于它不是从右边开始为下一个项目设置动画(当向上移动 1->2->n 时),而是在上一个项目完成动画处理时对其进行“.show()”。

给我一点时间来逐步浏览 .js

...

好的,我想我知道它是什么,它在做什么,当它从右到左(数字向上)移动时,你看不到从左边进入的新页面(更高的数字),因为“左”是从 100% -> 0% 移动,因为较小的数字正在移动。

好吧,我认为这是错误的......

如果您将and声明中的100%to更改为,那么它应该对您有用,不幸的是,我无法告诉您为什么我们(工作)避免 CSS 转换,因为我们做了很多公司工作,因此仍然需要支持 IE7+,有时甚至 6 :(92.5%@-webkit-keyframes slideinleft@-moz-keyframes slideinleft

请注意,您可以尝试一个值,而不是92.5%我只想找到对您有用的最低合理值(95%没用)

于 2012-07-09T02:48:30.440 回答