首页 前端知识 jQuery九宫格抽奖,php处理抽奖信息

jQuery九宫格抽奖,php处理抽奖信息

2025-03-19 11:03:44 前端知识 前端哥 108 183 我要收藏

功能介绍

jQuery九宫格抽奖是一种基于jQuery库的前端抽奖效果。通过九宫格的形式展示抽奖项,用户点击抽奖按钮后,九宫格开始旋转,最终停在一个随机位置上,此位置对应的抽奖项为用户的中奖结果。

本文实现九宫格的步骤为:
1. 创建一个包含九个格子的九宫格,通过php接口获取奖品信息。
2. 编写jQuery代码,监听抽奖按钮的点击事件,一旦点击,执行抽奖逻辑。
3. 在抽奖逻辑中,通过php接口获取抽奖结果。
4. 使用jQuery的动画函数,让九宫格开始旋转,最后在中奖方块位置停下。
5. 根据停止位置的抽奖项确定用户的中奖结果,并进行相关处理。

为了增加抽奖的趣味性和交互性,还可以在九宫格的格子上增加一些动态效果,例如使用CSS3的动画效果为格子添加旋转、放大等动画效果,或者在抽奖过程中播放一段音乐或动画等等。

效果图

代码实现

后端部分

获取奖品信息,正式项目可以存于数据库中方便后台管理

// 模拟九宫格的奖品
$prize = range(1, 9);
$prizeArray = [];
foreach ($prize as $value){
    $prizeArray[] = [
        'id' => $value,
        'name' => '第' . $value . '个奖品',
        'weight' => $value * 10,// 权重
    ];
}
echo json_encode($prizeArray);

根据奖品权重获取抽奖结果

$totalWeight = array_sum(array_column($prizeArray, 'weight'));// 总权重
$randNumber = rand(1, $totalWeight);// 获取一个随机数
$currentWeight = 0;// 当前权重
$result = [];// 抽奖结果
foreach ($prizeArray as $value){
    $currentWeight += $value['weight'];
    if ($randNumber <= $currentWeight){
        $result = $value;
        break;
    }
}
echo $result['id'];

前端部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>九宫格抽奖</title>
    <link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
    <div id="lottery-box">
        <ul class="lottery-grid">
        </ul>
        <button id="start-btn">开始抽奖</button>
    </div>
    <script src="jquery.min.js"></script>
    <script src="index.js"></script>
</body>
</html>

样式

#lottery-box {
    width: 320px;
    margin: 0 auto;
    text-align: center;
}

.lottery-grid {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}

.grid-item {
    width: 100px;
    height: 100px;
    line-height: 100px;
    border: 1px solid #000;
}

#start-btn {
    margin-top: 12px;
}

JS部分,这里通过ajax获取奖品信息和抽奖结果,以及动画效果

$(document).ready(function() {
    $.ajax({
        //请求资源路径
        url:"prize.php",
        //请求方式
        type:"POST",
        //请求成功后调用的回调函数
        success:function (data) {
            data = $.parseJSON(data);
            for (let i = 0; i < data.length; i++){
                $('.lottery-grid').append('<li class="grid-item">' + data[i]['name'] + '</li>');
            }
        },
        //请求失败后调用的回调函数
        error:function () {
            alert("未获取到奖品");
        }
    });
    $('#start-btn').click(function() {
        $(this).prop('disabled', true);
        setTimeout(function(){
            $('#start-btn').prop('disabled', false);
        }, 5000); // 禁用按钮5秒钟
        const $gridItems = $('.grid-item');
        $gridItems.css('background-color', '#fff');
        // 获取抽奖结果
        $.ajax({
            //请求资源路径
            url:"result.php",
            //请求方式
            type:"POST",
            //请求成功后调用的回调函数
            success:function (data) {
                let randomNumber = parseInt(data);
                // 开始动画效果
                let currentIndex = 0;
                const interval = setInterval(function () {
                    $gridItems.eq(currentIndex - 1).css('background-color', '#fff');
                    $gridItems.eq(currentIndex).css('background-color', '#8581812A');
                    currentIndex = (currentIndex + 1) % $gridItems.length;
                }, 200);
                // 停止动画,显示抽奖结果
                setTimeout(function() {
                    clearInterval(interval);
                    for (let i = 1; i <= $gridItems.length; i++){
                        if (randomNumber === i){
                            $gridItems.eq(i).css('background-color', '#f00');
                        }else {
                            $gridItems.eq(i).css('background-color', '#fff');
                        }
                    }
                }, 5000);
            },
            //请求失败后调用的回调函数
            error:function () {
                alert("获取抽奖结果失败");
            }
        });
    });
});

转载请注明出处或者链接地址:https://www.qianduange.cn//article/24109.html
标签
评论
发布的文章

动态规划感悟1

2025-03-20 12:03:52

华为NAS真实测评!

2025-03-20 12:03:52

Java设计模式之代理模式

2025-03-20 12:03:51

Linux 锁、线程同步

2025-03-20 12:03:48

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!