jQuery翻牌子抽奖效果(已知结果)

2 篇文章 0 订阅
2 篇文章 0 订阅

描述:在八个紫色背景中随机点击一个,将抽中的礼物插入数组(另外七个礼物)中,
点击的位置翻转,展示礼物,
1s后其他七个翻转,剩余的七个礼物会按顺序填满其他七个位置
(样式参考来源:https://www.likecs.com/show-459057.html

效果图:点击前——

 点击后——

 html部分:

<div class="exchange_result_bg" id="brand_result_pop">
    <div class="brand_pop popIn">
        <div class="brand_div clearfix brand_div1" id="brand_div">
            <!-- 牌子数据 -->
        </div>
    </div>
</div>

js部分:

    $(function(){
        var gifts = [
            {"giftId": 1, "url": "","name": "礼物1", "price": 10}, 
            {"giftId": 2, "url": "","name": "礼物2", "price": 20}, 
            {"giftId": 3, "url": "","name": "礼物3", "price": 30}, 
            {"giftId": 4, "url": "","name": "礼物4", "price": 40}, 
            {"giftId": 5, "url": "","name": "礼物5", "price": 50}, 
            {"giftId": 6, "url": "","name": "礼物6", "price": 60}, 
            {"giftId": 7, "url": "","name": "礼物7", "price": 70}, 
            {"giftId": 8, "url": "","name": "礼物8", "price": 80}, 
        ]
        var myMoLiGifts = gifts;//获取所有精灵礼物
        var giftHtml = '';
        // 默认展示 牌子不带礼物信息
        if (myMoLiGifts.length > 0) {
            for(var i = 0;i < myMoLiGifts.length;i++){
                giftHtml += brandHtmlNoMB.replace(/\{\{index\}\}/g, (i+1))
            }
        }
        $("#brand_div").html(giftHtml);
    });
    //抽奖 动作
    function funcGiftsTrendsData(clickIndex){
        // 调接口获取抽奖结果
            var data = {
                    "giftName": {
                        "{\"giftName\":\"抽到的礼物\", \"giftUrl\":\"1\", \"giftCoin\":10, \"giftId\":8}": 1
                    },
                    "otherGift": [
                        {"giftName": "礼物1","giftUrl": "","giftCoin": 10,"giftId": "1"}, 
                        {"giftName": "礼物2","giftUrl": "","giftCoin": 20,"giftId": "2"}, 
                        {"giftName": "礼物3","giftUrl": "","giftCoin": 30,"giftId": "3"}, 
                        {"giftName": "礼物4","giftUrl": "","giftCoin": 40,"giftId": "4"}, 
                        {"giftName": "礼物5","giftUrl": "","giftCoin": 50,"giftId": "5"}, 
                        {"giftName": "礼物6","giftUrl": "","giftCoin": 60,"giftId": "6"}, 
                        {"giftName": "礼物7","giftUrl": "","giftCoin": 70,"giftId": "7"},
                    ]
                }
            if (data.hasOwnProperty('msg')) {
                tankuang(data.msg);// 失败返回
            } else if (data.hasOwnProperty('giftName')) {
                //后台返回 该抽中的礼物
                var giftName = data.giftName , dataList;
                $.each(giftName,function(key,value){
                    dataList = $.parseJSON(key);
                });
                var dataAll = data.otherGift;
                // 加入选中礼物后 按照点击的位置 重新给礼物排序 
                dataAll.splice(clickIndex-1, 0,dataList);
                // 重新渲染牌子内容
                var giftHtml = '';
                if (dataAll) {
                    for(var i = 0;i < dataAll.length;i++){
                        var item = dataAll[i];
                        giftHtml += brandHtmlMB.replace(/\{\{index\}\}/g, (i+1))
                                    .replace(/\{\{giftSrc\}\}/g, item.giftUrl)
                                    .replace(/\{\{giftName\}\}/g, item.giftName)
                                    .replace(/\{\{giftPrice\}\}/g, (item.giftCoin + "币"));
                    }
                }
                $("#brand_div").html(giftHtml);
                // 选中的牌子翻转
                setTimeout(function(){
                    $("#item_side" + clickIndex).addClass("active");
                    $("#brand_item" + clickIndex).addClass("item_turn");
                    $("#brand_item" + clickIndex).parents(".brand_item_div").addClass("turnBtnClass");
                },200);
                // 其他牌子翻转
                setTimeout(function(){
                    for(var i = 0;i < dataAll.length;i++){
                        if((i+1) != clickIndex){
                            $("#brand_item" + (i+1)).addClass("item_turn");
                        }
                    }
                },1000);
            }
            
    }
    //一开始默认展示 牌子不带礼物信息
    var brandHtmlNoMB = '<div class="brand_item_div" onclick="funcGiftsTrendsData({{index}})">\
                            <div class="brand_item" id="brand_item{{index}}">\
                                <!-- 牌-礼物 -->\
                                <div class="item_side item_back"></div>\
                                <!--牌-背面 -->\
                                <div class="item_side item_front"></div>\
                            </div>\
                        </div>'
    //点击翻牌子后,重新渲染牌子+礼物排序
    var brandHtmlMB = '<div class="brand_item_div">\
                            <div class="brand_item" id="brand_item{{index}}">\
                                <!-- 牌-礼物 -->\
                                <div class="item_side item_back" id="item_side{{index}}">\
                                    <div class="item_img"><img src="{{giftSrc}}" alt="礼物图片{{giftName}}"></div>\
                                    <p class="item_name">{{giftName}}<br>{{giftPrice}}</p>\
                                </div>\
                                <!--牌-背面 -->\
                                <div class="item_side item_front"></div>\
                            </div>\
                        </div>'

css部分:

/*结果弹窗*/
.exchange_result_bg{width:100%;height:100%;background:rgba(0,0,0,0.8);position:fixed;top:0;right:0;bottom:0;left:0;z-index:99;}
/* 返牌弹窗 */
.brand_pop{width: 700px;height: 500px;box-sizing: border-box;position: fixed;margin: auto;left: 0;right: 0;top: 0;bottom: 0;}
.brand_p{width: 100%;height: 50px;font-size: 24px;text-align: center;color: #ffde1d;}
.brand_p span{font-size: 26px;color: #ff6101;font-weight: bold;}
.brand_p span.span_big{font-size: 28px;color: #ff6101;font-weight: bold;}
.brand_div{width: 638px;margin: 0 auto;}
.brand_div1{padding-top: 40px;}
.brand_div2{width: 475px;padding-top: 40px;}
.brand_div3{padding-top: 130px;}
.brand_item_div{float: left;width: 25%;height: 200px;margin-bottom: 14px;
    perspective:1000;/*perspective属性定义3D元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。*/
    -webkit-perspective:1000;
    -moz-perspective:1000;
    -ms-perspective:1000;
    -o-perspective:1000;}
.brand_div2 .brand_item_div{width: 33.3%;}
.brand_item{width: 137px;height: 200px;margin: 0 auto;
    position: relative;
    perspective:1000;
    -webkit-perspective:1000;
    -moz-perspective:1000;
    -ms-perspective:1000;
    -o-perspective:1000;
    backface-visibility:hidden;/*背对屏幕时隐藏*/
    -webkit-backface-visibility:hidden;
    -moz-backface-visibility:hidden;
    -ms-backface-visibility:hidden;
    -o-backface-visibility:hidden;
    transition: all 0.8s ease; /*为翻牌添加过渡效果*/
    -webkit-transition: all 0.8s ease;
    -moz-transition: all 0.8s ease;
    -ms-transition: all 0.8s ease;
    -o-transition: all 0.8s ease;
    transform-style: preserve-3d; /*子元素将保留其 3D 位置。*/}
.item_side{
    width:100%;
    height:100%;
    position: absolute;/*让背面和正面重叠*/
    left: 50%;
    margin-left: -68px;
    background: #ffde1d;
}
.item_side.active{
    background: #ffde1d;
    box-shadow:1px 1px 10px #c799ff;
}
.item_front{
    background:#c799ff;
    z-index: 2;
}
.item_back{
    transform:rotateY(180deg);
    -webkit-transform:rotateY(180deg);
    -moz-transform:rotateY(180deg);
    -ms-transform:rotateY(180deg);
    -o-transform:rotateY(180deg);
    z-index: 3;
}
.item_turn{
    transform:rotateY(180deg);
    -webkit-transform:rotateY(180deg);
    -moz-transform:rotateY(180deg);
    -ms-transform:rotateY(180deg);
    -o-transform:rotateY(180deg);
}
.item_img{width: 100%;height: 145px;margin: 0 auto;position: relative;}
.item_img img{height: 110px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);}
.item_name{text-align: center;color: #0867aa;font-size: 18px;line-height: 22px;}
.active .item_name{color: #6d05c1;}

/* 放大缩小 */
.turnBtnClass{animation: turnClass 1s infinite linear;}
@keyframes turnClass{
    0%{
        transform: scale(1);  /*开始为原始大小*/
    }
    50%{
        transform: scale(1.1); /*放大1.1倍*/
    }
}

注意事项:翻牌子效果 rotate样式存在iOS兼容问题,样式上注意层级加好
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值