js实现翻牌效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #container {
            width: 200px;
            height: 200px;
        }
        .card{
            width: 100%;
            height:100%;
            margin: 0 auto;
            overflow: hidden;
        }
        .card_a{
            background-color: red;
        }
        .card_b{
            background-color: blue;
            display: none;
        }
    </style>
</head>
<body>
<div id="container">
    <div class="card card_a">A</div>
    <div class="card card_b">B</div>
</div>
<script src="main.js"></script>
</body>
</html>
View Code
/**
 * Created by Administrator on 2016/8/9.
 */
(function () {
    var cardA = document.querySelector("#container .card_a");
    var cardB = document.querySelector("#container .card_b");
    var container = document.querySelector("#container");
    var playing = false;
    var aVisible = false;

    function showA() {
        if (!aVisible) {
            cardA.style.display = "block";
            cardB.style.display = "none";
            aVisible = true;
        }
    }

    function showB() {
        if (aVisible) {
            cardA.style.display = "none";
            cardB.style.display = "block";
            aVisible = false;
        }
    }

    function turnFromTo(from, to) {
        if (!playing) {
            playing = true;
            var widthPrecent = 100;
            var speed = widthPrecent / 20;
            var id = setInterval(function () {
                widthPrecent -= speed;
                from.style.width = widthPrecent + "%";
                if (widthPrecent <= 0) {
                    clearInterval(id);
                    if (aVisible) {
                        showB();
                    } else {
                        showA();
                    }
                    to.style.width = "0";
                    id = setInterval(function () {
                        widthPrecent += speed;
                        if (widthPrecent >= 100) {
                            widthPrecent = 100 + "%";
                            clearInterval(id);
                            playing = false;
                        }
                        to.style.width = widthPrecent + "%";
                    }, 20);
                }
            }, 20);
        }
    }

    function turnToA() {
        turnFromTo(cardB, cardA);
    }

    function turnToB() {
        turnFromTo(cardA, cardB);
    }

    function init() {
        showA();
        container.onclick = function (event) {
            if (aVisible) {
                turnToB();
            }
            else {
                turnToA();
            }
        }
    }

    init();
})();
View Code

 

转载于:https://www.cnblogs.com/chenluomenggongzi/p/5752077.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值