Iphone 如何通过CSS关闭某些HTML元素的硬件加速?

Iphone 如何通过CSS关闭某些HTML元素的硬件加速?,iphone,html,css,jquery-mobile,hardware-acceleration,Iphone,Html,Css,Jquery Mobile,Hardware Acceleration,我使用HTML5、CSS3和jQueryMobile创建了一个非常复杂的web应用程序 jQueryMobile似乎通过translate3D和/或translateZ到处开启硬件加速 现在我想对某些HTML元素关闭此选项 这给了我两个问题: 是否有css属性/属性或我可以用来告诉浏览器关闭某些元素的硬件加速 如果没有:我必须找到使用translate3D或translateZ的地方,然后简单地删除它们,对吗?我该怎么做?整个标记非常复杂,包含许多HTML元素。我无法遍历inspector中的

我使用HTML5、CSS3和jQueryMobile创建了一个非常复杂的web应用程序

jQueryMobile似乎通过
translate3D
和/或
translateZ
到处开启硬件加速

现在我想对某些HTML元素关闭此选项

这给了我两个问题:

  • 是否有css属性/属性或我可以用来告诉浏览器关闭某些元素的硬件加速
  • 如果没有:我必须找到使用
    translate3D
    translateZ
    的地方,然后简单地删除它们,对吗?我该怎么做?整个标记非常复杂,包含许多HTML元素。我无法遍历inspector中的每个元素并搜索它

更新:我想修复此问题的原因

在我的web应用程序中,有一些元素需要可切换(例如图像库)。在这种情况下,我需要硬件加速。对于需要iScroll的div容器和其他应设置动画的元素(例如幻灯片和淡入淡出动画)也是如此

但是,应用程序的许多部分是静态的(不是动画)。通过在Safari中使用一个特殊的启动选项,我能够使硬件加速的部件可见。通过这种方式,我注意到整个应用程序得到了硬件加速,而不仅仅是必要的部分

这不是一件好事,因为:

  • 加速整个过程会给GPU带来沉重的负载,这会使整个应用程序在滚动时结巴
  • 好吧,最好的做法是让CPU来处理静态的东西,而GPU只处理所有漂亮的动画
  • 当动画结束时,硬件加速应该被禁用,因为它不再是必需的,并且会缩短电池寿命

在浏览了数千行CSS代码后,我发现:

.ui-page{-webkit-backface-visibility: hidden !important}

这对所有页面都是活动的,并导致了问题。删除那条线为我解决了问题。

也许你可以告诉我们你真正想解决的问题。为什么硬件加速是件坏事?你只需要确定你的时间吗?据我所知,选择使用硬件加速和不使用硬件加速都是浏览器的事,这可以从一个浏览器版本更改为另一个版本。@jfriend00当然,我在原始问题中添加了这些信息。(顺便说一句,有些浏览器可以自行决定何时触发硬件加速,何时不触发(例如IE),但也有些浏览器需要像
translateZ(0)
translate3D(0,0,0)这样的黑客攻击
为某些元素激活硬件加速。我不认为您所列举的不希望加速的任何理由在所有浏览器/设备中都是正确的。当浏览器认为GPU有利于性能和电池寿命时,浏览器决定在CPU上使用GPU,而不是相反。此外,浏览器还决定使用GPU随着浏览器的改进和硬件的发展,从一个浏览器到另一个浏览器,从一个版本到另一个版本都会发生变化。我不知道你怎么可能在网页中知道在任何给定的浏览器/设备组合中,加速是最好的还是有害的。@jfriend00我只是在各种浏览器上测试了它,然后打开/关闭hardware加速。您是否打算在每次新浏览器版本发布时重新测试?浏览器会不时更改其行为以支持加速-这是我的观点。我的应用程序中没有这一行,那么我该如何关闭加速功能呢?