更新资料
很抱歉未能添加次要细节,我们也使用来将许多div元素叠加在一起z-index。处理更多此问题之后,似乎webkit- transform实际上与z-index排序混乱,并且实际问题与动画本身无关。
div
z-index
webkit- transform
结束更新
我目前在一个项目中,我们在该项目中开发了一个非常注重CSS3动画的应用程序。我们在和div周围围绕了许多元素。-webkit- transform``-webkit-transition
-webkit- transform``-webkit-transition
一切都很好,直到今天页面的所有要动画的元素都消失了。看来Google Chrome已从 12.xx 更新到 13.0.782.107m ,现在,带有-webkit前缀的CSS3属性突然停止工作了,并且对此属性应用的元素不再显示了。-webkit- transform通过Chrome调试器删除属性会使元素再次可见。
-webkit
-webkit- transform
是否有其他人遇到过同样的问题,或者知道如何解决此问题?
我可能会补充说,我尝试仅删除-webkit前缀(仅保留transform),然后显示缺少的元素,但是由于transform不支持CSS3属性,因此根本不会为元素设置动画。
transform
我也尝试使用el.style.webkitTransform和el.style.WebkitTransform,但没有成功。
el.style.webkitTransform
el.style.WebkitTransform
将通过一些示例代码来说明。预期的结果是sq1移开并显示出来sq2。
sq1
sq2
HTML: <div id="sq1" style="z-index:10;"> <div id="sq2" style="z-index:5;"> JS /* fetch the element */ var el = document.getElementById("sq1"); /* apply CSS */ el.style["-webkit-transition"] = "-webkit-transform 500ms linear"; el.style["-webkit-transform"] = "translate3d(30px, 30px, 0px)";
我自己通过反复试验解决了问题。以为如果有人偶然发现这个问题,我会报告。仍应注意,在Chrome将自身更新为Chrome 13(13.0.782.107m)之前,没有发生此问题。
这里的技巧似乎是在声明时(或至少在动画化之前)translate3d向基础<div>(sq2)元素添加操作sq1。
translate3d
<div>
否则,translate3d对上层<div>(sq1)的操作将导致渲染忽略下方的z-index和。我猜这是因为是在DOM中定义的,因此将在它之上呈现。sq1``sq2``sq1``sq2``sq2
sq1``sq2``sq1``sq2``sq2
因此,解决方案似乎是放入:s translate3d的定义<div>(将它们添加到两者中只是为了清楚):
HTML: <div id="sq1" style="z-index:10; -webkit-transform: translate3d(0px, 0px, 0px);"> <div id="sq2" style="z-index:5; -webkit-transform: translate3d(0px, 0px, 0px);">