【抽奖实现源码】原生js实现简单九方格抽奖实现(附源码下载)

news2024/11/22 19:27:14

文章目录

  • 写在前面
  • 涉及知识
  • 效果图
  • 1、搭建抽奖页面
  • 2、设置抽奖样式
    • 1)奖项区块颜色
    • 2)开始按钮背景色
    • 3)启动初始块颜色
  • 3、编写抽奖功能
  • 4、源码下载
    • 1) 百度网盘
    • 2)123云盘
  • 总结


写在前面

之前在一次线下活动大屏上看到一个抽奖界面,当时围了不少人,有人就说会不会有后门啊,这种抽奖概率看似很高总是中不到,我心想这个程序要想动手脚很简单的,因为程序都是人写的,即便是随机数现在也不随机了,那么我就写一个demo分享给大家吧。

涉及知识

抽奖界面实现,简单滚动抽奖界面的实现,原生js实现动态抽奖,跑马灯抽奖实现,随机抽奖界面实现,web抽奖页面制作与实现完整过程。
版权声明:此文原创于CSDN博主-《拄杖盲学轻声码》,主页有很多分享的代码,期待您的访问。

效果图

在这里插入图片描述

1、搭建抽奖页面

首先脑海中应该有一个画面构思,就是有几个区域,我主要是设置两个区域,一个是抽奖区域,还有一个就是结果展示区域,如下所示:
在这里插入图片描述

主要核心代码如下:

<p id='result'></p>

<div>
    <span class="aa">空调</span>
    <span>电饭煲</span>
    <span>洗碗机</span>
    <span>iphone14</span>
    <span>谢谢参与</span>
    <span>汽车</span>
    <span>自行车</span>
    <span>再抽一次</span>
    <span>开始</span>
</div>

下面就是样式的设置了,不然看着挺丑的。

2、设置抽奖样式

设置样式有三点,针对开始,奖品,初始位置做一个颜色的区分;
这里主要采用了div下的span标签,因此可以用css里面的:nth-of-type查找孩子节点

1)奖项区块颜色

统一对span设置颜色

div>span {
    float: left;
    width: 100px;
    height: 100px;
    border-radius: 20px;
    margin: 5px;
    background: rgb(22, 186, 236);
    color: white;
    text-align: center;
    line-height: 100px;

}

在这里插入图片描述

2)开始按钮背景色

开始按钮这是第9个span标签
设置样式如下:

div>span:nth-of-type(9) {
    cursor: pointer;
    background: rgb(255, 148, 61);
    position: relative;
    left: -110px;
    top: -110px;
}

在这里插入图片描述

3)启动初始块颜色

一般我们用左上角第一个作为初始块,当然这边我设置了class名为aa,其实设置这个有个目的就是为了后面抽奖时候针对路过的方块都可以添加这个样式。

div .aa {
   background: rgb(112, 146, 190);
}

整体样式如下:
在这里插入图片描述

3、编写抽奖功能

上面基本上也就把样式写好了,接下来就是如何让其跑起来,主要用原生的js来实现。
核心思想:设置一个定时轮询,设置一个随机次数和固定速度,这样的话就会形成一个动态效果,当然前面提到的造假完全可以在这里实现的。
具体代码如下:

var result = document.getElementById('result');
var spans = document.querySelectorAll("div>span");
function start() {
    spans.forEach(function (el, index) {
        if (index != 0) {
            el.classList.remove('aa'); // 清空上一次结果
        }
    })
    result.textContent = '';
    spans[8].style.cursor = "not-allowed";
    spans[8].onclick = null;
    let num = -1;      //奖品序号
    let times = parseInt(Math.random() * (30 - 18 + 1) + 18, 10);
    let time = 0;     //当前的旋转次数
    let speed = 100;  //转盘速度
    timer = setInterval(function () {
        num++;
        time++;
        if (num > 7) {
            num = 0;
            spans[0].classList.add('aa');
            spans[7].classList.remove('aa');
        } else if (num == 0) {
            spans[num].classList.add('aa');
            spans[7].classList.remove('aa');
        } else {
            spans[num].classList.add('aa');
            spans[num - 1].classList.remove('aa');
        }
        if (time > times) {
            spans[8].onclick = start;
            spans[8].style.cursor = "pointer";
            clearInterval(timer);
            result.textContent = '恭喜您,已经抽中了' + spans[num].textContent + '!!!';
        }
    }, speed)
}
spans[8].onclick = start;

效果如下:
在这里插入图片描述

版权声明:此文原创于CSDN博主-《拄杖盲学轻声码》,主页有很多分享的代码,期待您的访问。


4、源码下载

1) 百度网盘

链接:https://pan.baidu.com/s/1YM47OADKUJwPhwEPLSYW3Q
提取码:hdd6

2)123云盘

链接:https://www.123pan.com/s/ZxkUVv-uvI4.html
提取码: hdd6


总结

更多资料大家可以关注csdn博主-《拄杖盲学轻声码》

以上就是今天要讲的内容,本文主要介绍了有关web常见的抽奖界面的制作完整过程,也期待大家能与我互动哈,2023年一起加油!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

招商银行、江苏银行争相入局AIGC,“老银行”能否讲出“新故事”?

文 | 新熔财经 作者 | 和花 由ChatGPT引发的“大语言模型热潮”还没有过去。 六月&#xff0c;A股市场ChatGPT概念指数入选后股价涨幅超过20%的就超过30支&#xff0c;涨幅超过50%也有将近20支&#xff0c;像昆仑万维、万兴科技、神州泰岳、汤姆猫等公司&#xff0c;更是借着…

Qt扫盲-QMouseEvent 鼠标事件

QMouseEvent 鼠标事件理论 一、概述二、鼠标事件的传递三、组合修饰符四、鼠标坐标位置五、使用方式 一、概述 当在QWidget窗口内的鼠标按钮被按下或释放&#xff0c;或者鼠标光标被移动时&#xff0c;就会发生鼠标事件。 鼠标按下释放没有什么特殊的&#xff0c;但是鼠标移动…

数据可视化利器:五个常见组件助您洞察数据

数据可视化组件是在数据分析展示中我们离不开的工具&#xff0c;可以帮助我们更直观地理解和分析数据。不同的数据可视化组件适用于不同类型的数据&#xff0c;本文介绍五个常见的可视化组件以及它们适合展示的数据类型。 柱状图&#xff08;Bar Chart&#xff09;&#xff1a…

美团太狠:100亿级分库分表,不停机迁移,如何处理?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如腾讯、美团、阿里、拼多多、极兔、有赞、希音的面试资格&#xff0c;遇到一几个很重要的面试题&#xff1a; 数据库如何不停机迁移?100亿级库表&#xff0c;如何不停机迁移&a…

开放式耳机和封闭式耳机有什么区别,那开放式耳机对耳朵伤害大吗?

开放式耳机从字面意思可以理解为&#xff1a;开放耳朵&#xff0c;不需要入耳就可以听见声音的耳机。这种耳机最大的优点就是不压迫不封闭耳道&#xff0c;而且在听耳机音的同时能够及时注意到周围环境的声音&#xff0c;从而可以避免到一些安全事故的发生。 第一点&#xff1a…

台灯选a级还是aa级?科普a级台灯和aa级台灯的区别

我们经常能听到a级台灯aa级台灯&#xff0c;那么里面所说的a级、aa级到底是什么意思呢&#xff1f;其实这里所说的是国A级照度和国AA级照度标准的台灯&#xff0c;是根据国家颁布的《读写作业台灯性能要求》区别的&#xff0c;只有符合其标准的台灯才能被称为护眼台灯&#xff…

学习笔记整理-UML建模与应用复习3-动态模型

动态模型是用来描述系统的动态行为&#xff0c;分为状态模型和交互模型。 其中状态模型分为状态图和活动图&#xff1b;交互模型分为时序图和协作图。 一、交互模型 时序图是描述信息交换时的时间顺序&#xff0c;而协作图是描述系统对象之间共同完成系统功能的要求。 1、时序…

【网络技术】TCP详解

1 TCP是什么 TCP是Transmission Control Protocol的缩写&#xff0c;即传输控制协议。 TCP是一种面向连接的、可靠的、基于字节流的传输协议&#xff0c;是互联网通信协议TCP/IP中的一个重要组成部分。 2 三次握手 三次握手的过程可以用以下图示表示&#xff1a; 2.1 详细介绍…

php命令执行漏洞加固

首先需要去看一下命令执行漏洞的代码&#xff1a; 就像这样&#xff0c;我们可以利用管道符来进行执行一些命令。 我们在网站中渗透一下&#xff1a; 配合上管道符&#xff0c;我们就可以进行执行命令。 这样的话我们总么进行加固呢&#xff0c;我们可以利用if语句来进行加固…

Hadoop启动后没有NameNode进程,日志报ulimit -a for user root

环境&#xff1a;CentOS7、Hadoop2.6.4 背景&#xff1a;安装后启动正常&#xff0c;一段时间在来启动发生这种情况。 现象&#xff1a; 启动后没有NameNode进程&#xff0c;于是查看日志&#xff0c;日志显示ulimit -a for user root&#xff0c;潜意识还以为文件不能读。&a…

期货反向跟单系统能精准捕捉买卖点嘛?什么人不适合做期货反向跟单?

期货反向跟单&#xff0c;就是指在期货市场上&#xff0c;根据某些大户或者专业机构的交易动向&#xff0c;采取与之相反的操作策略&#xff0c;以期获得利润。例如&#xff0c;当发现某个大户在买入某种期货合约时&#xff0c;就立即卖出同样数量的合约&#xff0c;反之亦然。…

MQTT协议学习

前言 最近在学习mqtt协议&#xff0c;看的是官方英文版的&#xff0c;写这篇博客就是为了将一些关键内容提取出来&#xff0c;以便日后的查询和复习&#xff0c;有需要的可以参考。官方的文档在这&#xff1a; MQTT Essentials - All Core Concepts explained (hivemq.com) …

svn下载及使用

下载 链接&#xff1a;https://pan.baidu.com/s/1RV6vAujA1anHhXJuKbItUQ?pwdflzx 提取码&#xff1a;flzx 这是svn安装包以及中文安装包&#xff0c;放在百度网盘了&#xff0c;有需要可以下载 注意&#xff1a;svn中文语言包安装的版本需要和svn的版本一致 他有两种安装…

ModaHub魔搭社区:向量数据库Milvus产品问题(一)

目录 产品问题 Milvus 会收费吗&#xff1f; Milvus 支持非 x86 平台吗&#xff1f; Milvus 支持对向量的插入、删除、更改和查询操作吗&#xff1f; Milvus 可以处理百亿或千亿级数据吗&#xff1f; Milvus 数据存储在哪里&#xff1f; 为什么我在 SQLite / MySQL 找不…

实时监测:BL102 PLC网关在水利设施中的数据采集

随着工业智能化的快速发展&#xff0c;BL102 PLC网关作为一种先进的工业自动化设备&#xff0c;在泵站远程监测领域发挥了重要的作用。通过BL102 PLC网关&#xff0c;我们可以实现对泵站PLC的远程监测和控制&#xff0c;从而提高泵站的工作效率和管理水平。 ​一、BL102 PLC网关…

机器人轨迹生成:轨迹规划与路径规划

机器人轨迹生成涉及到轨迹规划和路径规划两个关键概念&#xff0c;它们是机器人运动控制中的重要组成部分。下面对轨迹规划和路径规划进行深入比较。 轨迹规划&#xff08;Trajectory Planning&#xff09;&#xff1a; 定义&#xff1a;轨迹规划是指在机器人运动中确定机器人末…

【设计模式】第十六章:迭代器模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

2023 年 最全的 24 个最佳免费照片恢复软件

你的心脏停止跳动&#xff0c;你的胃下沉。你的血液变冷了。你无法屏住呼吸。这是恐慌和怀疑的结合。如果您曾经丢失过数字文件&#xff0c;这种感觉很熟悉。 也许您不小心删除了照片。或者某些文件可能只是消失了。不管发生什么&#xff0c;都是令人心碎的。 不过&#xff0…

2023年27个最佳WordPress博客和新闻杂志主题

当建设杂志和新闻网站时&#xff0c;WordPress是首选。 纽约时报、TechCrunch、CNN、路透社、Mozilla 博客等知名新闻网站以及许多其他网站都使用 WordPress 作为他们的首选平台&#xff0c;突出了WordPress杂志主题的可扩展性。 在一个年轻受众与新闻品牌的联系明显较弱的世…

K8S出错bash: _get_comp_words_by_ref: command not found

重新配置了CentOS环境&#xff0c;执行kubectl apply -f xxx.yaml&#xff0c;想自动补全文件名&#xff0c;遇到错误&#xff1a;bash: _get_comp_words_by_ref: command not found 但是试验其它bash自动补全功能&#xff0c;没问题&#xff0c;比如cd 某个目录自动补全&#…