events - 具有负 z 值的 CSS 3D 转换后的 html 元素不会触发事件

标签 events html css translate3d

在下面的场景中,我们看到两个 div 在一个容器中应用了 CSS3 3D 转换。 两者都应在单击时触发事件。在这种情况下,会显示一个警告,指示点击了哪个 div。

<!DOCTYPE html>
<html>
<body>
  <div style="-webkit-perspective: 600; -webkit-transform-style: preserve-3d; width: 500px; height: 200px; overflow: hidden;">
    <div onclick="alert('1');" style="-webkit-transform: translate3d(0px, 0px, -100px); background-color: blue; position: absolute; width: 100px; height: 100px;">
    </div>
    <div onclick="alert('2');" style="-webkit-transform: translate3d(200px, 0px, 100px); background-color: red; position: absolute; width: 100px; height: 100px;">
    </div>
  </div>
</body>
</html>

现在的问题是,只有第二个 div 显示了所需的行为。 点击第一个 div 不会导致如图所示的警报(在最新的 safari、chrome 和 safari iOS 上测试)。

一旦我将负 z 值从 -100px 更改为 0px 或正值,一切正常。

这是浏览器的错误吗? 有什么方法可以实现所需的行为吗?

最佳答案

我以前见过这个问题:

CSS3 transition problem on iOS devices

Webkit Mobile 不喜欢负 z-index 值和 3d 变换。 W3C 声明 z-index 必须是整数 http://www.w3.org/TR/CSS2/visuren.html#z-index ,但在实践中——由于 Firefox 和现在的 Webkit 的遗留问题——最好坚持使用正数。

关于events - 具有负 z 值的 CSS 3D 转换后的 html 元素不会触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751137/

相关文章:

events - GWT eventbus 处理多个模块

c# - 事件处理程序应该用他们的委托(delegate)来装饰吗?

html - 如何仅在换行符上添加边距?

html - 使用 flexbox 在跨度和段落之间创建一条水平线

html - Go: HTML 找不到 css 文件

asp.net - 在ASP.NET Web应用程序中未单击Application_Start

java - 在生成事件的源元素的父元素中居中 JoptionPaneMessageDialog

html - CSS 定位多个表格

jquery - 如何将类添加到幻灯片中的当前图像?

html - Bootstrap 选项卡式导航/拆分下拉按钮问题