javascript实现可键盘控制的抽奖系统

需要实现一个可键盘控制的抽奖系统,我们可以采用JavaScript语言编写代码。下面,我将详细介绍实现步骤:

步骤一:创建HTML页面

首先,我们需要在HTML页面中创建一个大转盘和一个按键,用户可以通过这个按钮来控制转盘的停止。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>可键盘控制的抽奖系统</title>
    <style>
        #circle {
            width: 500px;
            height: 500px;
            background-color: #CCC;
            border-radius: 50%;
            position: relative;
        }
        #startBtn {
            width: 100px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            background-color: #F00;
            color: #FFF;
            position: absolute;
            left: 50%;
            margin-left: -50px;
            top: 50%;
            margin-top: -25px;
            z-index: 10;
            cursor: pointer;
        }
        .item {
            position: absolute;
            width: 60px;
            height: 100px;
            left: 50%;
            margin-left: -30px;
            top: 50%;
            margin-top: -50px;
            text-align: center;
            font-size: 22px;
            color: #FFF;
            line-height: 100px;
            transform-origin: center bottom;
            box-shadow: 0px 0px 10px #CCC;
        }
        .item:nth-child(1) {
            transform: rotate(0deg);
            background-color: #F00;
        }
        .item:nth-child(2) {
            transform: rotate(60deg);
            background-color: #0F0;
        }
        .item:nth-child(3) {
            transform: rotate(120deg);
            background-color: #00F;
        }
        .item:nth-child(4) {
            transform: rotate(180deg);
            background-color: #FF0;
        }
        .item:nth-child(5) {
            transform: rotate(240deg);
            background-color: #0FF;
        }
        .item:nth-child(6) {
            transform: rotate(300deg);
            background-color: #F0F;
        }
    </style>
</head>
<body>
    <div id="circle">
        <div class="item">奖品1</div>
        <div class="item">奖品2</div>
        <div class="item">奖品3</div>
        <div class="item">奖品4</div>
        <div class="item">奖品5</div>
        <div class="item">奖品6</div>
        <div id="startBtn">开始</div>
    </div>
    <script src="./index.js"></script>
</body>
</html>

在上述代码中,我们使用了CSS样式来定义大转盘的样式和奖品的名称。同时,我们在转盘上添加了一个“开始”按钮,用户可以通过这个按钮来启动转盘的旋转。

步骤二:编写JavaScript代码

在HTML页面中引用JavaScript文件,并且在JavaScript文件中我们需要给“开始”按钮绑定一个点击事件,当用户点击该按钮时,转盘就会开始旋转。

const circle = document.querySelector('#circle');
const startBtn = document.querySelector('#startBtn');

const items = document.querySelectorAll('.item');

const rotateDeg = [0, 60, 120, 180, 240, 300];

const rotateSpeed = 5; // 转盘旋转速度

let isRunning = false; // 标识转盘是否正在旋转

function run() {
    let curIndex = parseInt(Math.random() * 6); // 随机选择一个奖项,共6个

    let deg = 0; // 当前旋转角度

    isRunning = true;
    startBtn.style.backgroundColor = '#CCC';
    startBtn.removeEventListener('click', run);

    const timer = setInterval(() => {
        deg += rotateSpeed;
        circle.style.transform = `rotate(${deg}deg)`;

        if (deg >= rotateDeg[curIndex] + 360 * 5) { // 旋转5圈以上
            clearInterval(timer);
            isRunning = false;
            startBtn.style.backgroundColor = '#F00';
            startBtn.addEventListener('click', run);
            alert(`中奖了:${items[curIndex].innerHTML}`);
        }
    }, 30);
}

startBtn.addEventListener('click', run);

// 绑定键盘事件
window.addEventListener('keydown', (event) => {
    if (event.keyCode === 32) { // space键
        if (!isRunning) {
            run();
        }
    }
})

在上述JavaScript代码中,我们首先获取页面上的大转盘和“开始”按钮。并且,我们通过querySelectorAll()方法获取到所有的奖项。

为了使每个奖项能够顺时针旋转,在代码中我们定义了一个rotateDeg数组,其中包含了每个奖项的旋转角度。

接下来,我们给“开始”按钮绑定了一个点击事件。在点击事件中,我们随机选择一个奖项,并且开始以每30毫秒5度的速度旋转转盘,直至旋转达到一定角度后再停止。此外,我们还监听了keydown事件,当用户按下空格键时,也会启动转盘的旋转。

最后,当转盘旋转结束时,我们通过alert()方法弹出提示框,提示用户中奖的奖项。

示例说明

下面是两个示例说明:

示例一:启动转盘

打开页面后,点击“开始”按钮或按下空格键,转盘就会开始旋转。

// 点击“开始”按钮
startBtn.click(); 

// 按下空格键
window.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 32 }));

示例二:停止转盘

当转盘正在旋转时,可以再次点击“开始”按钮或按下空格键,即可停止转盘旋转。

// 点击“开始”按钮
startBtn.click(); 

// 按下空格键
window.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 32 }));

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现可键盘控制的抽奖系统 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Javascript中replace()小结

    当我们在Javascript中需要进行字符串的替换操作时,可以使用字符串内置的replace()方法。replace()方法接受两个参数,第一个参数是要替换的字符串或正则表达式,第二个参数是用于替换的新字符串。 下面是replace()的基本语法: string.replace(searchvalue, newvalue) 其中: searchvalue:要…

    JavaScript 2023年5月28日
    00
  • 原生js实现查找/添加/删除/指定元素的class

    实现查找指定元素的class可以使用Element.classList属性,该属性是一个只读的类数组对象,可以返回元素的所有class列表。同时,该属性还包含了一些常用的方法,可以用于添加、删除、切换、是否存在等操作。 查找指定元素的class 为了查找指定元素的class,可以使用如下代码: let element = document.getElemen…

    JavaScript 2023年6月10日
    00
  • 深入理解JS中的substr和substring

    深入理解JS中的substr和substring 在JavaScript字符串操作中,substr()和substring()是两个常用的函数,都用来截取字符串。但在具体应用场景和实现方式有所不同,因此需要深入理解其差异。 substr() substr()函数接受两个参数,第一个参数是截取的起始位置,第二个参数是截取的长度。如果省略第二个参数,则默认截取至…

    JavaScript 2023年6月11日
    00
  • json格式的Ajax提交示例代码

    当我们需要使用Ajax提交数据到后台服务器,通常我们会使用JSON格式来传输数据。以下是JSON格式的Ajax提交示例代码的完整攻略: 步骤1:引入jQuery库 首先,我们需要在HTML文件中引入jQuery库文件,代码如下: <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.…

    JavaScript 2023年6月10日
    00
  • 使用GruntJS链接与压缩多个JavaScript文件过程详解

    在这里我将为你详细讲解如何使用GruntJS链接和压缩多个JavaScript文件。我们将顺序进行以下步骤: 安装grunt-cli和grunt-contrib-concat,grunt-contrib-uglify插件。 在开始之前,我们需要先确保你的系统上安装了npm,它是整个Grunt工具链的基础。接下来,在终端中运行以下命令,安装grunt-cli和…

    JavaScript 2023年5月27日
    00
  • javascript 基础篇3 类,回调函数,内置对象,事件处理

    让我来为你详细讲解 JavaScript 基础篇3:类、回调函数、内置对象和事件处理的完整攻略。 类 在面向对象编程中,类是一种定义行为和数据的蓝图,从这个蓝图可以创建具体的对象。JavaScript 中的类是通过构造函数来实现的。 定义类 定义类时,需要使用 class 关键字,然后在大括号内定义类的字段和方法。例如,下面是定义一个 Person 类的语法…

    JavaScript 2023年5月28日
    00
  • JavaScript中的方法重载实例

    下面是关于JavaScript中的方法重载实例的完整攻略。 什么是方法重载 方法重载指的是在同一个作用域下,为一个函数定义多个参数列表的函数,这些函数被称为重载函数。当函数被调用时,会根据传入的参数类型和数量的不同,自动选择执行对应的重载函数。在JavaScript中,由于没有类型声明,方法重载需要借助函数内部的判断逻辑来实现。 实现方法重载 实现方法重载的…

    JavaScript 2023年6月11日
    00
  • document.getElementById介绍

    当我们需要获取HTML页面中的元素并且对其进行操作时,就需要用到document.getElementById方法。这个方法可以通过指定元素的id属性值,从HTML文档中获取对应的元素节点对象,并返回该节点对象。接下来我会详细讲解document.getElementById的用法和注意事项。 语法 document.getElementById()的语法如…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部