小编典典

webkit-transform覆盖Chrome 13中的z-index排序

css

更新资料

很抱歉未能添加次要细节,我们也使用来将许多div元素叠加在一起z-index。处理更多此问题之后,似乎webkit- transform实际上与z-index排序混乱,并且实际问题与动画本身无关。

结束更新

我目前在一个项目中,我们在该项目中开发了一个非常注重CSS3动画的应用程序。我们在和div周围围绕了许多元素。-webkit- transform``-webkit-transition

一切都很好,直到今天页面的所有要动画的元素都消失了。看来Google Chrome已从 12.xx 更新到 13.0.782.107m
,现在,带有-webkit前缀的CSS3属性突然停止工作了,并且对此属性应用的元素不再显示了。-webkit- transform通过Chrome调试器删除属性会使元素再次可见。

是否有其他人遇到过同样的问题,或者知道如何解决此问题?

我可能会补充说,我尝试仅删除-webkit前缀(仅保留transform),然后显示缺少的元素,但是由于transform不支持CSS3属性,因此根本不会为元素设置动画。

我也尝试使用el.style.webkitTransformel.style.WebkitTransform,但没有成功。

将通过一些示例代码来说明。预期的结果是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)";

阅读 368

收藏
2020-05-16

共1个答案

小编典典

我自己通过反复试验解决了问题。以为如果有人偶然发现这个问题,我会报告。仍应注意,在Chrome将自身更新为Chrome
13(13.0.782.107m)之前,没有发生此问题。

这里的技巧似乎是在声明时(或至少在动画化之前)translate3d向基础<div>sq2)元素添加操作sq1

否则,translate3d对上层<div>sq1)的操作将导致渲染忽略下方的z-index和。我猜这是因为是在DOM中定义的,因此将在它之上呈现。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);">
2020-05-16