变换使得3D卡的背面不可点击

时间:2014-05-06 18:12:56

标签: css css3 rotation css-transforms

我想翻转http://desandro.github.io/3dtransforms/examples/card-01.html

但每边都有按钮。所以这是我的 html

<div class="flip-container">
    <div class="flip">
        <div class="side front">
            <p>front</p>
            <button class="front-flip-button">flip</button>
        </div>
        <div class="side back">
            <p>back</p>
            <button class="back-flip-button">flip</button>
        </div>
    </div>
</div>

css

.flip-container{
    position: relative;
    -webkit-perspective: 800;
    width: 500px;
    height: 300px;
}
.flip{
    position: absolute;
    width: inherit;
    height: inherit;
    -webkit-transform-style: preserve-3d;
    -webkit-transition-duration: 500ms;
    -webkit-transform: translate3d(0, 0, 0);
    border: 1px solid;
}
.side{
    position: absolute;
    width: inherit;
    height: inherit;
    -webkit-transform-style: preserve-3d;
    -webkit-backface-visibility: hidden;
}
.flip.flipped,
.back{
    -webkit-transform: rotate3d(0, 1, 0, 180deg);
}
.back-flip-button,
.front-flip-button{
    position: absolute;
    left: 0;
    top: 0;
}
p{
    font-size: 90px;
    text-align: center;
}

一切都很好,但是当我使用translateZ的某个元素时,它会使按钮无法点击。

<div class="flip-container">
    <div class="flip">
        <div class="side front">
            <p>front</p>
            <button class="front-flip-button">flip</button>
        </div>
        <div class="side back">
            <p>back</p>
            <button class="back-flip-button">flip</button>
        </div>
    </div>
</div>

<div class="some"></div>

为什么会这样?

http://jsfiddle.net/j5Sm4/

1 个答案:

答案 0 :(得分:5)

应用此

.back-flip-button {
    ... Your other styles ...
    -webkit-transform:translateZ(1px);
    -webkit-backface-visibility:hidden;
    /* Needs other prefixes to be cross browser */
}

Demo

这是因为父元素有自己的堆叠顺序。为了均衡堆叠顺序并将按钮置于顶部,您必须使用translateZ给它一个堆叠顺序。 backface-visibility:hidden使按钮不显示在正面

将来我们可以通过将will-change属性应用到背面来实现这一目标