Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使硬币翻转动画双面_Javascript_Jquery_Html_Css_Animation - Fatal编程技术网

Javascript 使硬币翻转动画双面

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

我想这个动画取自animate.css,显示一个硬币有两个不同的面,而不是同一个。我将代码的相关部分粘贴到此小提琴上:

HTML代码:

<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
}