0

我有一个显示翻转卡的JSFiddle,它可以在 chrome 中正常工作,但 Firefox 中的深度透视是平坦的,我不确定问题出在哪里。

我试过添加:

transform-style: preserve-3d;

perspective: 1000;

所有课程(如卡片)我都没有运气。

HTML结构是:

<div id="card-container">
    <button id="card-flip">Flip the card</button>
    <div id="card">
        <div class="front card-surface"><!-- front -->
            <p>The front</p>
        </div>
        <div class="back card-surface"><!-- back -->
            <p>The back</p>
        </div>
    </div>
</div>

简化的 CSS 是:

#card-container{
    position: relative;
    background-color:#888;
    width: 300px;
    height: 450px;
    margin:0 auto;
}
#card-flip{
    display:none;
}
#card{
    margin:10px auto;
    width: 100%;
    height: 400px;
}
.card-surface{
    margin-top:5px;
    width: 280px;
    height: 180px;
    padding:10px;
}
.front{
     background-color:#7B78E8;   
}
.back{
     background-color:#78AFE8;   
}
/* Only apply 3d effects if they exist in the browser */

#card-container.threed{
    height: 250px;
    perspective: 1000;
}
.threed #card-flip{
    background-color:transparent;
    position:relative;
    top:220px;
    width:100%;
    height:40px;
    background-color:#99E5FF;
}
.threed #card-flip:focus{
    outline:0;
}
.threed #card-flip:hover{
    background-color:#49A5BF;
}
#card-flip:hover + #card .card-surface{
    box-shadow: 0 0px 50px rgba(0,0,0,0.9);
    transition: all .8s ease-in-out;
}
.threed #card{
    height:200px;   
}
.threed #card .front {
    float: none;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 900;

    transform: rotateX(0deg) rotateY(0deg);

    transform-style: preserve-3d;

    backface-visibility: hidden;
}

.threed #card.flip .front {
    z-index: 900;
    border-color: #eee;
    background: #333;
    box-shadow: 0 15px 50px rgba(0,0,0,0.2);

    transform: rotateY(180deg);
}

.threed #card .back {
    float: none;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 800;
    border: 1px solid #ccc;
    text-shadow: 1px 1px 1px rgba(0,0,0,0.6);

    transform: rotateY(-180deg);

    transform-style: preserve-3d;

    backface-visibility: hidden;
}

.threed #card.flip .back {
    z-index: 1000;
    background-color:#ccc;
    transform: rotateX(0deg) rotateY(0deg);
}
.threed #card .card-surface{
    background-color:$base-white;
    transition: all .8s ease-in-out;
    width: 280px;
    height: 180px;
    padding:10px;
}

我见过像This one这样的工作示例。谁能告诉我我缺少什么或者这种结构不可能?

4

1 回答 1

0

我已经弄清楚了这个问题。

这是小提琴的新版本。问题是我没有pxafter 透视属性。chrome 忽略了这一点,但 firefox 忽略了这一点。我还在演示中将透视应用到了错误的元素,所以即使我px在它不起作用之前尝试过广告。

于 2014-12-01T15:46:52.833 回答