Javascript 使硬币翻转动画双面
我想这个动画取自animate.css,显示一个硬币有两个不同的面,而不是同一个。我将代码的相关部分粘贴到此小提琴上: HTML代码:Javascript 使硬币翻转动画双面,javascript,jquery,html,css,animation,Javascript,Jquery,Html,Css,Animation,我想这个动画取自animate.css,显示一个硬币有两个不同的面,而不是同一个。我将代码的相关部分粘贴到此小提琴上: HTML代码: <div id="coin-flip"> <button id="btnFlip">Flip the Coin</button></br></br></br> <div id="coin-flip-cont"> <d
<div id="coin-flip">
<button id="btnFlip">Flip the Coin</button></br></br></br>
<div id="coin-flip-cont">
<div id="coin"></div>
</div></br></br></br>
<h2 id="result"></h2>
</div>
掷硬币
Javascript,jQuery代码:
$(function() {
var coin = {
sideOne: "./img/image1.png",
sideTwo: "./img/image2.png"
}
$("#btnFlip").click(function() {
$("#coin").html(`<img class="animated flip"src="${coin[result]}" width="200" length="200"/>`);
});
});
$(函数(){
var硬币={
旁白:“./img/image1.png”,
第二点:“./img/image2.png”
}
$(“#btnFlip”)。单击(函数(){
$(“#coin”).html(``);
});
});
CSS来自Animate.CSS,您可以在小提琴中查看它
基本上,我想要的结果是硬币翻转,显示不同的两面,并落在由我的代码其余部分设置的一面上
编辑:只是把这个作为我想要实现的一个例子
我觉得这可以用一种简单得多的方法来完成,并且可以使用我已有的css。您可以使用animationend事件来检测css动画何时结束 然后执行代码以更改图像源 JQuery
$('#coin').on('webkitAnimationEnd oanimationend msAnimationEnd animationend',
function(e) {
$("#coin").removeClass('animateCoin');
setTimeout(function() {
var srcImg = $($('#coin img')[0]).attr('src');
if (srcImg === coin.heads)
$($('#coin img')[0]).attr('src',coin.tails);
else
$($('#coin img')[0]).attr('src',coin.heads);
$("#coin").addClass('animateCoin');
},50);
});
CSS:
.animateCoin {
animation: flip 1s;
}
首先,更改这一行HTML代码:
<button id="btnFlip">Flip the Coin</button>
掷硬币
致:
掷硬币
然后将javascript更改为以下代码:
function coin_flip{
var coin_1 = "/images/image_1.png"
var coin_2 = "/images/image_2.png"
// the 8 below is the number of flips in your animation
for (var i = 0 ; i<8 ; i++){
if (document.getElementById("coin").src == coin_1){
document.getElementById("coin").src == coin_2
}
if (document.getElementById("coin").src == coin_2){
document.getElementById("coin").src == coin_1
}
}
// below chooses a random side
var rand = Math.floor((Math.random() * 2) + 1);
document.getElementById("coin").src == "coin_" + rand
}
功能硬币翻转{
var coin_1=“/images/image_1.png”
var coin_2=“/images/image_2.png”
//下面的8是动画中的翻转次数
对于(var i=0;i,这里是您可以运行flip coin双面解决方案的完整代码片段。
要查看正确的结果,请在完整页面视图中查看,否则您可以在codepen上查看。
你也可以有代码笔的链接
jQuery(文档).ready(函数($){
var spinArray=['animation900'、'animation1080'、'animation1260'、'animation1440'、'animation1620'、'animation1800'、'animation1980'、'animation2160'];
函数getSpin(){
var spin=spinArray[Math.floor(Math.random()*spinArray.length)];
回程自旋;
}
$('#flip')。在('click',function()上{
$(“#coin”).removeClass();
setTimeout(函数(){
$('#coin').addClass(getSpin());
}, 100);
});
});
html,正文{
保证金:0;
宽度:100%;
身高:100%;
背景色:#333;
}
#硬币翻转控制{
宽度:200px;
高度:200px;
位置:绝对位置;
顶部:calc(50%-100px);
左:计算(50%-100px);
}
#硬币{
位置:相对位置;
宽度:200px;
变换样式:保留-3d;
}
#硬币,正面,硬币,背面{
位置:绝对位置;
宽度:200px;
高度:200px;
}
#硬币正面{
转换:translateZ(1px);
边界半径:50%;
背景色:#3498db;
边框:实心5px灰色;
}
#硬币,回来{
变换:translateZ(-1px)rotateY(180度);
边界半径:50%;
背景色:#2ecc71;
边框:实心5px灰色;
}
#硬币。动画900{
-webkit动画:旋转900 3s线性向前;
动画:旋转900 3s线性向前;
}
#硬币。动画1080{
-webkit动画:旋转1080 3s线性向前;
动画:旋转1080 3s线性向前;
}
#硬币。动画1260{
-webkit动画:旋转1260 3s线性向前;
动画:旋转1260 3s线性向前;
}
#硬币。动画1440{
-webkit动画:旋转1440 3s线性向前;
动画:旋转1440 3s线性向前;
}
#硬币。动画1620{
-webkit动画:旋转1620 3s线性向前;
动画:向前旋转1620 3s;
}
#硬币。动画1800{
-webkit动画:旋转1800 3s线性向前;
动画:旋转1800 3s线性向前;
}
#硬币。动画1980{
-webkit动画:旋转1980 3s线性向前;
动画:旋转1980 3s线性向前;
}
#硬币。动画2160{
-webkit动画:旋转2160 3s线性向前;
动画:旋转2160 3s线性向前;
}
@-webkit关键帧旋转900{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{webkit变换:rotateY(900度);-moz变换:rotateY(900度);变换:rotateY(900度);}
}
@关键帧旋转900{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{webkit变换:rotateY(900度);-moz变换:rotateY(900度);变换:rotateY(900度);}
}
@-webkit关键帧旋转1080{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{-webkit变换:rotateY(1080deg);-moz变换:rotateY(1080deg);变换:rotateY(1080deg);}
}
@关键帧旋转1080{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{-webkit变换:rotateY(1080deg);-moz变换:rotateY(1080deg);变换:rotateY(1080deg);}
}
@-webkit关键帧旋转1260{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{-webkit变换:rotateY(1260deg);-moz变换:rotateY(1260deg);变换:rotateY(1260deg);}
}
@关键帧旋转1260{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{-webkit变换:rotateY(1260deg);-moz变换:rotateY(1260deg);变换:rotateY(1260deg);}
}
@-webkit关键帧旋转1440{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{webkit变换:rotateY(1440deg);-moz变换:rotateY(1440deg);变换:rotateY(1440deg);}
}
@关键帧旋转1440{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{webkit变换:rotateY(1440deg);-moz变换:rotateY(1440deg);变换:rotateY(1440deg);}
}
@-webkit关键帧旋转1620{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{-webkit变换:rotateY(1620度);-moz变换:rotateY(1620度);变换:rotateY(1620度);}
}
@关键帧旋转1620{
来自{webkit transform:rotateY(0);-moz transform:rotateY(0);transform:rotateY(0);}
到{webkit transfor
function coin_flip{
var coin_1 = "/images/image_1.png"
var coin_2 = "/images/image_2.png"
// the 8 below is the number of flips in your animation
for (var i = 0 ; i<8 ; i++){
if (document.getElementById("coin").src == coin_1){
document.getElementById("coin").src == coin_2
}
if (document.getElementById("coin").src == coin_2){
document.getElementById("coin").src == coin_1
}
}
// below chooses a random side
var rand = Math.floor((Math.random() * 2) + 1);
document.getElementById("coin").src == "coin_" + rand
}