【发布时间】:2015-02-26 20:20:57
【问题描述】:
我试图用谷歌搜索它并在这里检查了类似的问题,但我什么也没找到:(
http://codepen.io/suez/pen/d563d6819f7df5c0b0f55db3e9bfc085?editors=010 - 这是一个演示。它在 chrome 中完美运行,但我无法在 Firefox 中悬停/单击居中块的按钮,开发工具检查员说我正在悬停 .rotater 元素,当它有 z-index: 3 和 .inner 元素有 @987654329 @。所有正确嵌套的元素都有position: absolute/relative,并且孩子的z-index比他们的父母大。主容器.scene 也有透视属性,.level,.rotater,.elem 有transform-style: preserve-3d 和.elem 有translateZ。我试图解决这个问题,但现在我不知道该怎么做:(
这是 css 的一部分(最好在 codepen 上查看完整版):
.scene {
z-index: 1;
position: relative;
height: 100%;
perspective: 200vw;
}
.level {
z-index: 2;
position: absolute;
left: 0;
width: 100%;
height: 100%;
transition: transform 1s;
transform-style: preserve-3d;
}
.rotater {
z-index: 3;
position: absolute;
top: 0;
left: 10%;
width: 80%;
height: 100%;
transition: transform 0.7s;
transform-style: preserve-3d;
}
.elem {
z-index: 4;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
transition: transform 1s;
backface-visibility: hidden;
font-size: 5rem;
text-align: center;
transform-style: preserve-3d;
@for $i from 1 through $level1Elems {
&:nth-child(#{$i}) {
transform: rotateY(0 - ($i - 1) * $level1Angle) translateZ($level1Z);
}
}
}
.inner {
z-index: 5;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #EEEEEE;
transition: transform 0.3s;
box-shadow: 0.6rem 1rem 1rem rgba(0,0,0,0.3);
}
.art-btn {
position: absolute;
z-index: 6;
top: 50%;
left: 50%;
width: 80%;
height: 10rem;
transform: translateX(-50%) translateY(-50%);
display: block;
outline: none;
border: 0.5rem solid;
background: transparent;
font-size: 5rem;
text-transform: uppercase;
cursor: pointer;
transition: background-color 0.3s, color 0.3s, transform 0.3s;
}
更新:如果我从 .rotater 中删除 transform-style: preserve-3d; 在 FF 中一切正常,但它完全破坏了我的布局:(
更新 #2:http://codepen.io/suez/pen/7b889e66f096a65459b3994c4b4e2a07 - 非常简单的错误重现。 5个元素,第一个有透视,2&3&4有preserve-3d,4个有translateZ()。您可以在 chrome 中选择文本,但不能在 FF 中执行此操作。如果您从 4 个元素中删除 translateZ(-50vw),一切都会按预期工作,但 translateZ 绝对是必须的。
更新 #3:我想出了我的笔的 hack(更新版本在这里 - http://codepen.io/suez/pen/b9cd3de42a464aa98579cd009e6e83a6?editors=010)。我制作了.rotater 2px 宽度/高度,将其放置在中心,并将.elem 宽度/高度更改为 vw/vh 单位,并添加负左/上,以便放置在中心,就像以前一样。无论如何它仍然有小问题,如果用户以某种方式悬停 .rotater 的 2pxx/2px 区域,他会在 FF 中失去按钮焦点:D 但我可以忍受这个。
【问题讨论】:
-
如果您可以将示例减少到重现问题所需的最低限度的 HTML 和 CSS,将会有所帮助。目前那里的代码量可能会阻止人们尝试回答这个问题。
-
@phari codepen.io/suez/pen/7b889e66f096a65459b3994c4b4e2a07 - 我在这里重新创建了它。 Chrome 可以,FF 不行。无论如何,我已经找到了破解方法(但不是文明的方式:D)并将很快发布
-
codepen.io/suez/pen/bNKBmR - 带有 hack 的最终版本。