翻纸牌抽奖特效

1 篇文章 0 订阅
1 篇文章 0 订阅

先贴效果图:首先看到的是背面扑克牌

然后3秒后全部正面

看下都有什么奖项,3秒后全部展示背面,点击其中一项,进行抽奖。

揭开最后奖项位置。(注意4图和2图位置是不一样的)

下面开始贴代码:

html:

<div style="position: absolute; left:10%; top:20%;">

    <div id="container"></div>

</div>

css:

.cards-item {
    width: 50px;
    height: 95px;
    margin-right: 15px;
    margin-bottom: 15px;
    float: left;
    perspective: 1000px;
}
.cards-item-click {
    cursor: pointer;
}
.cards-item-body {
    transition: 0.6s;
    transform-style: preserve-3d;
    position: absolute;
}
.cards-item-body, .cards-item-front, .cards-item-back {
    top: 0%;
    left: 0%;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
    position: absolute;
}
.cards-item-front {
    z-index: 2;
    transform: rotateY(0deg);
    background-size: 100% 100% ;
}
.cards-item-back {
    z-index: ;
    transform: rotateY(180deg);
    background-size: 100% 100% ;
}
.cards-item-flip {
    transform: rotateY(-180deg);
}

js:(使用前先引用jquery.min.js,版本都可以我用的是:jquery-1.12.4.js 还需要引用:GearCase4Js_Core.js)

除了jquery.min.js,其他jquery代码,是我两年前刚入职时,拜托同学大神写的代码。一直保留至今。

//构造

var LItem = function (val, url) {
    this["Value"] = val;
    this["Url"] = url;
    this["Obj"] = null;
};
LItem.prototype = {};
$(function () {
    //配置
    var properties = {
        front: "f.jpg",//牌背
        autoFlipTimeout: 2000,//翻牌延时
        shuffleTime: 200//洗牌交换次数
    };

    var variables = {
        canClick: false//是否响应点击
    };
    //牌堆
    variables["items"] = new $g.type.List([
        new LItem(5, "5.jpg"),
        new LItem(5, "5.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(2, "2.jpg"),
        new LItem(100, "100.jpg"),
        new LItem(500, "500.jpg")
    ]);

    //牌容器
    var cardContainer = $("<div class='cards'></div>");
    //牌模板
    var cardItemTemplate = "<div class='cards-item'>" +
        "<div class='cards-item-body'>" +
        "<div class='cards-item-front' style=' width: 50px;height: 78px; background-image: url(\"../Luckdraw/img/{:front}\");' />" +
        "<div class='cards-item-back' style='width: 50px;height: 78px; background-image: url(\"../Luckdraw/img/{:back}\");' />" +
        "</div>" +
        "</div>";
    //样式模板
    var styleTemplate = "url(\"../Luckdraw/img/{:value}\")";
    //遍历牌堆
    variables.items.each(function (i) {
        //生成对象
        var obj = $(cardItemTemplate.fill("front", properties.front).fill("back", i.Url));
        //注册点击
        obj.click(function () {
            if (variables.canClick) {
                variables.canClick = false;
                obj.find(".cards-item-body").addClass("cards-item-flip");
                variables.items.each(function (i) {
                    i.Obj.removeClass("cards-item-click");
                });

                setTimeout(function () {
                    variables.items.each(function (i) {
                        i.Obj.find(".cards-item-body").addClass("cards-item-flip");
                    });
                }, properties.autoFlipTimeout);
                alert(i.Value);
            } else {
                console.log(i.Value);
            }
        });
        //赋值
        i.Obj = obj;
        //添加到容器
        cardContainer.append(i.Obj);
    });
    //将容器添加到页面
    $("#container").append(cardContainer);
    //首次自动翻牌
    setTimeout(function () {
        //遍历牌堆
        variables.items.each(function (i) {
            //找到实际dom
            var obj = i.Obj.find(".cards-item-body");
            //翻转
            obj.addClass("cards-item-flip");
            //延时
            setTimeout(function () {
                //翻回并添加点击样式
                obj.removeClass("cards-item-flip");
                i.Obj.addClass("cards-item-click");
            }, properties.autoFlipTimeout);
        });
        //翻转后
        setTimeout(function () {
            //设置响应点击
            variables.canClick = true;
            //洗牌
            for (var i = 0; i < properties.shuffleTime; i++) {
                //生成随机数
                function rand(max) {
                    return Math.floor(Math.random() * max);
                }
                //交换
                function swap(left, right) {
                    var temp = {
                        Value: left.Value,
                        Url: left.Url
                    };

                    left.Value = right.Value;
                    left.Url = right.Url;
                    right.Value = temp.Value;
                    right.Url = temp.Url;
                }
                //生成随机交换
                var items = variables.items;
                var left = rand(items.length);
                var right = rand(items.length);
                left = items[left];
                right = items[right];
                //进行交换
                swap(left, right);
                //切换图片
                left.Obj.find(".cards-item-back").css("background-image", styleTemplate.fill("value", left.Url));
                right.Obj.find(".cards-item-back").css("background-image", styleTemplate.fill("value", right.Url));
            }
        }, properties.autoFlipTimeout + 500);
    }, properties.autoFlipTimeout);

})

function ondanji(){
    var divT = document.getElementById("tlble");
    if(divT.style.display=="none"){
        divT.style.display="block";
    }else{
        divT.style.display="none";
    }
}

这样就完成了。还可以控制抽到大奖的几率哦,需要修改几率的看不懂可以加我QQ:2751499750

以前用到过,希望能帮助你!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
queryRotate 这个插件就可以实现这个功能 jqueryRotate: 支持Internet Explorer 6.0+ 、Firefox 2.0 、Safari 3 、Opera 9 、Google Chrome,高级浏览器下使用Transform,低版本ie使用VML实现 google code地址:http://code.google.com/p/jqueryrotate/ 下面了解下这个插件怎么使用 1 $("触发转动元素").rotate(45); //直接这样子调用的话就是变换角度 2 3 $("触发转动元素").getRotateAngle(); //返回对象当前的角度 4 5 $("触发转动元素").stopRotare(); //停止旋转动画 6 7 $("触发转动元素").rotateRight() 向右旋转90度 $("触发转动元素").rotateLeft()向左旋转90度。 01 $("触发转动元素").rotate({   02      angle:0, //起始角度 03      animateTo:180, //结束的角度 04      duration:3000, //转动时间 05      callback:function(){}, //回调函数 06      easing:$.easing.easeOutSine // $.easing.easeInOutExpo 运动的效果,需要引用jquery.easing.min.js的文件 07   }) 08 09 $("触发转动元素").rotate(45); //转动45 10 11 $("触发转动元素").getRotateAngle(); //返回对象当前的角度 12 13 $("触发转动元素").stopRotare(); //停止旋转动画 14 15 另外可以更方便的通过调用$(el).rotateRight()和$(el).rotateLeft()来分别向右旋转90度和向左旋转90度。 大转盘原理:随机出一个数字,通过后台算出在那个概率区间返回指定跳转的角度 例 一等奖 概率1% 如果在1-100 随机出100则跳转一等奖的角度范围内 二等奖 概率2% 如果在1-100 随机出99-98则跳转二等奖的角度范围内 三等奖 概率97% 如果在1-100 随机出97-1则跳转三等奖的角度范围内 下面以一个简单demo为例子 01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 02 <html xmlns="http://www.w3.org/1999/xhtml"> 03 <head> 04 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 05 <script type="text/javascript" src="jquery-1.8.0.min.js"></script> 06 <script type="text/javascript" src="jQueryRotate.2.2.js"></script> 07 <script type="text/javascript" src="jquery.easing.min.js"></script> 08 <script type="text/javascript" src="zp.js"></script> 09 <style type="text/css"> 10 body { 11 background: url(bg.png) 0 0 repeat; 12 } 13 14 .rotate-content { 15 width: 270px; 16 position: relative; 17 height: 270px; 18 background: url(activity-lottery-bg.png) 19 no-repeat 0 0; 20 background-size: 100% 100%; 21 margin: 0 auto 22 } 23 24 .rotate-con-pan { 25 background: url(disk.jpg) 26 no-repeat 0 0; 27 backgr

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值