jquery - CSS3 transition/transform/translate3d 导致过渡的第一个或最后一个 "frame"出现严重闪烁(在 iPad 上)

标签 jquery animation css

全部,

我正在开发一个专门针对 iPad 的网络应用程序,我正在使用 CSS3 过渡来为 div 设置动画(将它从左向右移动)。

我的类(class)是这样的:

.mover {
    -webkit-transition:all 0.4s ease-in-out;
}

当用户点击一个按钮时,我这样做:

var s = "translate3d(" + newPosition + "px, 0, 0)";
$('.mover ').css('-webkit-transform', s);

这很好用EXCEPT用户触发转换的FIRST;第一次,有一个非常明显的闪烁。

我意识到我不需要使用 translate3d,因为我只是左右移动 div,但据我所知,这会强制 iPad 使用 GPU 加速。 (这是正确的吗?)

非常感谢!

[更新]

我对“闪烁”有点模棱两可。简而言之 - 我一直在尝试各种 CSS3 过渡(特别是在 iPad 上),并且始终如一 - 我注意到在开始结束时有明显的闪烁> 过渡。

换句话说,过渡本身非常平滑。但是,根据精确的设置,在过渡开始或结束之前会出现明显的闪烁。

这是另一个示例:我将三张照片 (PNG) 堆叠在一起。

底部 PNG 的不透明度 = 1.0,顶部 2 个不透明度 = 0.0。使用-webkit-keyframes,我能够在照片淡入淡出时获得丝般平滑的过渡。当动画结束时,底部照片以不透明度 = 1.0 结束,顶部两张照片以不透明度 = 0.0 结束。 (那应该是他们的最终状态)。

然而,就在动画结束的时候,下方的照片却在闪烁。就好像浏览器强制重绘/重绘屏幕,而这只需要几分之一秒。

破坏效果并渲染然后过渡无法使用就够糟糕的了。 (在我的 iMac 上,它几乎,但并非完全不可察觉。在 iPad 上,它是不容错过的)。

最佳答案

我正在处理同样的问题,我在 SO 上找到了解决方案:iPhone WebKit CSS animations cause flicker

添加就这么简单

-webkit-backface-visibility: hidden;

可能

-webkit-perspective: 1000;

到每个动画对象。它对我有用,希望这对你也有帮助

关于jquery - CSS3 transition/transform/translate3d 导致过渡的第一个或最后一个 "frame"出现严重闪烁(在 iPad 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5814101/

相关文章:

CSS 背景图像不加载

javascript - jQuery(移动)不触发 Phonegap 应用程序上的 .change 事件

jquery的hover().addClass()问题

Angular 4 Material 对话框平滑过渡

javascript - 通过使用带有 Javascript 的 addClass/removeClass 单击按钮在 div 上触发动画

javascript - 使用JS更改页面上的所有颜色

javascript - 如何将div定位在父div的右侧

javascript - jQuery 属性等于选择器 [name=”value”] 传递以反斜杠结尾的变量时出现问题

javascript - Unityscript动画参数UCE0001 : ';' expected

css - Tailwindcss - 如何在组悬停实用程序中添加上/下/右/左