【发布时间】:2011-01-10 21:35:55
【问题描述】:
我正在使用 HTML5/CSS3 为 iPad 开发应用程序。我没有使用任何框架,只是使用设备本机支持的任何内容。我创建了一些 css3 动画来模拟典型的 iOS 在屏幕之间导航时向左或向右滑动。这是一个利用 iPad 的 CSS3 硬件加速的左滑动画示例:(ipad 运行的是 4.2)。
/*************************************************
Slide Left
*************************************************/
.screen.slideleft{
-webkit-animation-duration: 0.5s;
-webkit-animation-timing-function: ease-in-out;
}
.screen.slideleft.outgoing{
z-index: 50 !important;
-webkit-animation-name: slideleft-outgoing;
}
.screen.slideleft.incoming{
z-index: 100 !important;
-webkit-animation-name: slideleft-incoming;
}
@-webkit-keyframes slideleft-outgoing{
from { -webkit-transform: translate3d(0%,0,0); }
to { -webkit-transform: translate3d(-100%,0,0); }
}
@-webkit-keyframes slideleft-incoming{
from { -webkit-transform: translate3d(100%,0,0); }
to { -webkit-transform: translate3d(0%,0,0); }
}
我也有这个 CSS,我试图用它来修复闪烁:
.incoming,
.outgoing{
display: block !important;
-webkit-backface-visibility: hidden;
}
在使用 iPad 键盘之前,这非常有效。之后所有的动画都会严重闪烁。
我一直在寻找一个 iPad HTML5 应用程序的示例,该应用程序使用键盘并且之后没有闪烁,但没有出现太多。 jqTouch 演示在 iPad 上表现出相同的行为(尽管我知道它们是为 iPhone 设计的)。
我发现了一些类似问题的帖子/问题,但从未找到好的答案。我已经通过http://css3animator.com/2010/12/fight-the-flicker-making-your-css3-animation-bomb-proof/ 和那里链接的文章,但没有任何成功。
还有其他建议吗?
更新 1/13 @ 9am
我添加了这个 CSS,它帮助很大:
.incoming *,
.outgoing *{
-webkit-backface-visibility: hidden;
-webkit-transform: translate3d(0,0,0); /* This helps with the flicker a lot. */
}
前景元素似乎不再闪烁,但背景仍然闪烁。仍在寻找有关 Mobile Safari 内存处理策略的帮助或有用资源。
更新 1/16 @ 11pm
按照anonymous 的建议增加z-index。好像没什么区别。
更新 1/17 @ 8:30am
我已经发布了问题的演示 here。
屏幕之间的转换效果很好......直到您在其中一个表单域内点击/单击。键盘向上滑动并返回后,所有的转场都会闪烁。转到 iOS 模拟器或实际 iPad 上的 URL,看看我在说什么。
【问题讨论】:
-
我仍在寻找任何有用的建议!
-
为可以帮助我解决问题的人开始赏金。
标签: javascript ipad css cordova