我有一个HTML5,jQuery卡记忆游戏,你可以通过一次翻转两张卡来匹配卡片。我希望在匹配两张卡时播放动画,但因为我已经将"transform: rotationY(180deg)"
应用于翻转的卡片,所以它会出错。
卡片HTML
<div id="card1" class="card">
<figure class="front">
<img src="front.jpg">
</figure>
<figure class="back">
<img src="back.jpg">
</figure>
</div>
首先,玩家会揭示这一点,并将“翻转”类添加到其中。
.flipped {
transform: rotateY(180deg);
}
然后我删除“翻转”类并添加类scaleOut。 rotateY用于保持旋转,以便右侧不断向玩家显示,并且刻度可以隐藏卡片。
.scaleOut {
-webkit-transform: rotateY(180deg) scale(0.0);
}
这似乎不起作用,即使只是添加翻转的类成功翻转卡片。 Chrome似乎可以运行动画,但会立即播放它们,而Firefox根本不播放缩放动画。
这是我更改类的代码。它可以很好地添加和删除类。
$(#card1).removeClass('flipped');
$(#card1).addClass('scaleOut');
卡片和纸板CSS
#board {
padding-top: 10px;
width: 600px;
height: 450px;
background-color: rgb(228, 223, 208);
-webkit-perspective: 1000px;
perspective: 1000px;
}
.card {
float:left;
width: 106px;
height: 100px;
margin-left: 10px;
margin-bottom: 10px;
border: 1px solid #cfcfcf;
cursor: pointer;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transition: -webkit-transform 1s;
transition: transform 1s;
}
答案 0 :(得分:1)
我没有理由说明为什么会这样,但在scale(1)
类transform
内设置.flipped
时似乎工作正常。由于scale(1)
是初始状态,并且卡片在翻转但不匹配时应该是可见的,我不认为将此添加到transform
属性会导致任何问题。(我会当我设法找到此行为的原因时更新答案。)
这适用于Chrome,Firefox和Edge的最新版本。
注意:在您更新了有关电路板和卡的CSS之前,已准备好该代码段。 CSS有点不同,但解决方案仍然适用于您的情况。
var temp1 = $('#card1');
temp1.on('click', function() {
temp1.addClass('flipped');
setTimeout(function() {
temp1.removeClass('flipped');
temp1.addClass('scaleOut');
}, 2500);
})
''
.flipped {
transform: rotateY(180deg) scale(1);
}
.scaleOut {
transform: rotateY(180deg) scale(0);
}
.front {
background: yellowgreen;
}
.back {
background: green;
}
.card {
position: relative;
height: 100px;
width: 100px;
border: 1px solid;
transform-style: preserve-3d;
transition: all 1s;
}
figure {
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
margin: 0;
backface-visibility: hidden;
}
.back {
transform: rotateY(180deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="card1" class="card">
<figure class="front">
<img src="front.jpg">
</figure>
<figure class="back">
<img src="back.jpg">
</figure>
</div>