【问题标题】:Slide down using css (hardware acceleration)使用 css 向下滑动(硬件加速)
【发布时间】:2014-12-25 00:19:52
【问题描述】:

我在包装容器 div 中有一个“堆栈”子 div。这些子 div 似乎会向下滑动,因为新的子元素不断地附加到顶部并赋予 .slideDown() 动画,因此也迫使所有其他子元素向下滑动。这工作正常,但我在 PhoneGap 应用程序中使用它,当快速完成时,它看起来波涛汹涌和跳跃。我听说这可以通过进行 css 转换来做得更好,这会强制硬件加速(我认为)。但是,我看到的每个示例似乎都在尝试比我需要的复杂得多的东西,我无法弄清楚,所以如果可能的话,任何帮助将不胜感激。

jQuery 代码:

row.hide().prependTo('#blockArea').slideDown(1000, 'linear');

blockArea 是包装器,row 是要添加的行。

【问题讨论】:

  • 将初始高度设置为0 并将transition 添加到CSS,创建另一个具有正确高度的类,并在添加元素后使用javascript添加该类,然后ta-da !
  • 我将行高设为 0,并将行“transition: height 1s ease-in”放在行类中。然后我有另一个“高度:20%”的类,我添加一次,但它不做转换,不确定正确的方法。

标签: jquery cordova css-animations


【解决方案1】:

不会那么容易...

如果你真的想使用硬件加速获得更好的结果,你不能依赖高度转换。

你应该怎么做?有几种可能性,但我会推荐:

按原样添加 div,没有过渡。同时,在包装器上设置一个变换,样式为

transform: translateY(***px);

应该计算这个变换来补偿新的 div,以便任何东西移动(新的 div 将呈现在当前的上方,并且可能超出视口)。

also, set a transition on transform of the time that you want.

现在,在延迟函数中,将变换更改为 translateY(0px)。可以在 0 毫秒的 setTimeout() 内完成。您需要这样做以便应用过渡

祝你好运!

【讨论】:

  • 好的,我正在尝试,但我不认为我完全遵循。我正在使用 row.prependTo('#blockArea');正常添加行。然后我应该向包含 transform: translateY(***px);... 的包装器添加一个类,只是将整个 blockArea 向下移动到页面而不是行?
  • 不完全是。我的建议是使用 translateY 将其移至页面上方。最终结果是不会显示插入的 div 的向下移动。移动 blockArea 应该移动行,因为行在 rowarea 内
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
相关资源
最近更新 更多