当前位置: 首页 > 面试题库 >

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

杨高翰
2023-03-14
问题内容

更新资料

很抱歉未能添加次要细节,我们也使用来将许多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)";

问题答案:

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

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

否则,translate3d对上层<div>sq1)的操作将导致渲染忽略下方的z-index和。我猜这是因为是在DOM中定义的,因此将在它之上呈现。sq1``sq2``sq1``sq2``sq2

因此,html" target="_blank">解决方案似乎是放入: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);">


 类似资料:
  • 问题内容: 使用绝对位置时,有什么方法可以覆盖父元素的z-index继承。我希望2222 div在0000 div之上: 我无法更改0000或1111 div的z索引,并且尝试将2222元素相对于1111元素定位。 问题答案: 我相信z-index是相对于最近定位的元素。因此,如果您在“ 1111” div中有两个div,则它们可以相对于彼此进行z索引,但是由于2222是1111的子元素,因此不能

  • 问题内容: 使用transform属性,z-index被取消并出现在前面。(注释掉-webkit-transform时,z-index在下面的代码中正常工作) 转换和z-index如何一起工作? 问题答案: 让我们逐步了解正在发生的事情。首先,请注意在定位的元素上,并单独在元素上创建新的“ 堆栈上下文”。这是怎么回事: 您的元素设置为非空,这为其赋予了自己的堆叠环境。 然后添加一个伪元素,它是的子

  • 问题内容: 我有两个绝对重叠的div元素。两者都通过CSS设置了z- index值。我使用webkit转换在屏幕外为这些元素设置动画,然后再回到屏幕上。转换后,元素不再遵守其设置值。 一旦我对它们进行webkit转换,谁能解释div元素的z-index / stack-order会发生什么?并说明如何保持div元素的堆叠顺序? 这是有关我如何进行转换的更多信息。 在转换之前,每个元素都会通过CSS

  • 描述 (Description) z-index设置元素的堆叠级别。 可能的值 (Possible Values) auto - 元素的堆栈级别与其父元素的堆栈级别相同。 integer - 元素的堆栈级别设置为给定值,并为任何后代元素建立新的堆栈上下文。 适用于 (Applies to) 所有定位的元素。 DOM语法 (DOM Syntax) object.style.zindex = "1";

  • 默认情况下,网页是一个二维空间,并根据在DOM中的顺序,从左到右,从上到下,依次排列各个元素。 当页面上出现相对定位、或绝对定位、或固定定位的元素后,如果对一个元素设置了偏移,就很可能出现元素相互重叠的情况。如果把页面作为 x-y 轴,垂直于页面的方向就是 z 轴,重叠的情况就发生在 z 轴。 元素在 z轴 的位置,取决于它在DOM中的先后顺序。如果两个元素发生重叠,在DOM中先出现的元素,通常排

  • 问题内容: 这个div 比这上面显示的 当我在第一个div中分配z-index:98时,一切都很好!如果需要,我可以提供更多代码。 问题答案: z-index面向其父级-它们都在同一个父级元素中吗?z-index实现了自己的堆栈-例如: 框D,E和F是框C的后代->框F(z-index:-1)覆盖框B(z-index:1),因为它是框c的后裔(此框与z-索引:3,超出框b)