首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >html+css+js实现带有转盘的抽奖小程序

html+css+js实现带有转盘的抽奖小程序

作者头像
GeekLiHua
发布于 2025-01-21 11:59:45
发布于 2025-01-21 11:59:45
967012
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:12
代码可运行

html+css+js实现带有转盘的抽奖小程序

简介:html+css+js实现带有转盘的抽奖小程序

效果展示

抽奖方式

飞镖 飞镖制作成飞机的模样,没人的号码用黄色标签做成云朵模样黏贴在背景板上,年会背景板缓缓移动,飞扎中的名字得奖寓意飞黄腾达。

福利彩票机 年会入场嘉宾人手一张自制。

可以哒云抽奖 创建抽奖活动后,扫描活动二维码,推广二维码,最后在拿出手机抽奖。

转盘抽奖 数字,转动三次构成一组百位数,号码对应者获奖。随着号码的逐一产生,现场配合音响效果能创造出激动人心的效果。

摘红包 把个人的电话号码写于纸上放在红包里,年会上领导随机摘取一个,然后打电话给获奖人。悬念十足,气氛紧张。

捞金 由年会上领导在箱子里放入一定数额的大额人民币,其余人用一元的纸币写上自己的名字或号码,放多少个人而定,放越多机会越多。(主持强调,付出越多收获越大)领导抽出中奖人再从准备好的三个信封抽出一个,三个信封内为:一只手,两只指,一双筷子等,然后自行捞取现金。最后被抽中的人所有奖金都归他。

藏宝图 具有设计感的小纸粘在杯碟椅子等地方上,在开party前,一张藏宝图分2份对开的,上边写着礼品号码,礼分2份的就是个号码有2分的,其中一分是真的,一分是假的,当他们找好藏宝图后必然要找另一半藏宝图才可以对奖的,在找藏宝图时就可以互动作用了,不过号码里的礼品一定要放点好玩的东西的(奶瓶,尿不湿)也放点大奖的啦,当同一张小纸合起来,就可以上换奖了,也可以拿了藏宝图的一对人交换藏宝图的,那时就会出很多笑话了。例如有人的藏宝图只找到半张纸时,他可能会看领导的杯杯碟碟的。强调团队合作的重要性。

本文采取的是转盘抽奖:

实现代码

index.html
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="./style.css" type="text/css" rel="stylesheet">
</head>
<style>

</style>
<body>
    
<!-- 首先通过分析观察可以知道这是一个双层次结构,
所以需要的是div嵌套结构 -->
<div class="outher">
    <div class="wapper">
        <div class="left">
            <!-- 一边4个选项 -->
                <div class="one"> <span class="text"></span></div>
                <div class="two"> <span class="text"></span></div>
                <div class="three"> <span class="text"></span></div>
                <div class="four"> <span class="text"></span></div>
        </div>
        <div class="right">
            <div class="one"> <span class="text"></span></div>
            <div class="two"> <span class="text"></span></div>
            <div class="three"> <span class="text"></span></div>
            <div class="four"> <span class="text"></span></div>
        </div>
     
      </div>
      <!-- 图形中间的文字 -->
      <div class="circle">
             抽奖
     </div>
</div>

<script src="style.js"></script>

</body>
</html>
style.css
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
*{
    margin:0;
    padding:0;
}

body{
    /* 让div盒子放到屏幕中间 */
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}


.outher{
    width:300px;
    height: 300px;
    position: relative;
    border-radius: 50%;
}

.wapper{
    width:300px;
    height: 300px;
    border-radius: 50%;
    overflow: hidden;
    background-color: black;
    transform:rotate(22.5deg);
 }

 .left{
     position: absolute;
     width: 150px;
     height: 300px;
     left:0;
     overflow: hidden;
 }

 .left .text{
     position: absolute;
     top:30px;
     left:55%;
     transform:rotate(-22.5deg);
     text-align: center;
 }

 .right .text{
     position: absolute;
     top:25px;
     left:11%;
     transform:rotate(22.5deg);
     text-align: center;
 }

 
 .right{
     position: absolute;
     width: 150px;
     height: 300px;
     right:0;
     overflow: hidden;
     text-align: center;
 }


 .left div{
   position: absolute;
   top:0;
   left:0;
   width: 100%;
   height: 100%;
   transform-origin: right center;
}

.left div.one{
   background-color: #FC7C7B;
}


.left div.two{
   background-color: #F59462;
   transform:rotate(-45deg);
}

.left div.three{
   background-color: #FC7C7B;
   transform:rotate(-90deg);
}

.left div.four{
   background-color: #F59462;
   transform:rotate(-135deg);
} 


.right div{
   position: absolute;
   top:0;
   left:0;
   width: 100%;
   height: 100%;
   transform-origin: left center;
}


.right div.one{
   background-color: #FC7C7B;
}


.right div.two{
   background-color: #F59462;;
   transform:rotate(45deg);
}

.right div.three{
   background-color: #FC7C7B;;
   transform:rotate(90deg);
}

.right div.four{
 
   background-color: #fff;
   transform:rotate(135deg);
} 

.circle{
   width: 100px;
   height: 100px;
   background-color:#f2552e ;
   position: absolute;
   left:50%;
   top:50%;
   transform:translate(-50%,-50%);
   border-radius: 50%;
   text-align: center;
   line-height: 100px;
   font-size: 30px;
   font-weight: bold;
   cursor: pointer;
   user-select: none;
}

.circle:after{
    width: 0;
    height: 0;
    border:40px solid #f2552e ;;
    border-left-width: 10px;
    border-right-width: 10px;
    position: absolute;
    content:"";
    border-left-color: transparent;
    border-top-color: transparent;
    border-right-color: transparent;
    top:-70px;
    left:calc(50% - 10px);
    z-index: -1;
}
style.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let wapper = document.querySelector(".wapper");

    let textAll = document.querySelectorAll(".wapper .text");

    // 这里是奖项的名字
    let prize = ["1号大奖","2号大奖","3号大奖","4号大奖","5号大奖","6号大奖","7号大奖","未中奖"];
    
    // 权重数组 不同奖项的权重值,权重越高越容易中这个区域
    let prizeWeight = [1,3,5,7,10,15,20,30];
    
    //  权重之和
    let weightSum = prizeWeight.reduce(function(prevValue,curVal){
        return prevValue + curVal;
    });


    for(let i = 0 ; i < textAll.length ; i++){
            textAll[i].innerHTML = prize[i];  
    }

    let isFlag = true;

        document.querySelector(".circle").onclick=function(){
            console.log(123);
        if(isFlag){
            
        // 生成权重随机数 生成数的范围是【1,30】
        // 这里需要注意的是,这个30要和最上面的prizeWeight的最后一个值对应
        let weightRandom = parseInt(Math.random()*30);
        // 合并
        let concatAfterArr = prizeWeight.concat(weightRandom);
    
        // 排序
        let  sortedWeightArr  = concatAfterArr.sort(function(a,b){ return a-b });

        // randomIndex是奖项的索引 结果是【1,7】
        var randomIndex = sortedWeightArr.indexOf(weightRandom); 
        randomIndex = Math.min(randomIndex, prize.length -1); 

            // 获奖的内容
            let text = prize[randomIndex];
            
            switch(randomIndex){
                case 0:
                    run(22.5,text);
                    break;
                case 1:
                    run(66.5,text);
                    break;
                case 2:
                    run(112.5,text); 
                    break;
                case 3:
                    run(157.5,text);
                    break;
                case 4:
                    run(338.5,text);
                    break;
                case 5:
                    run(294.5,text);
                    break;   
                case 6:
                    run(247.5,text);
                    break;
                case 7:
                    run(201.5,text);
                    break;    
            }
        }
        
    };

    function run(angle,text){
    isFlag = false;
    let begin = 0; 
    let timer = null;
    let basic = 1800;
    timer = setInterval(function(){
        if(begin > (basic+angle)){
            isFlag = true;
            clearInterval(timer);
        }
        wapper.style.transform="rotate("+(begin)+"deg)";
        // 这是一个算法 可以出现转盘又很快到慢慢变慢的效果
        begin+=Math.ceil(basic+angle-begin)*0.1;
    },70);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】2022年08月 微信小程序项目篇-抽奖轮盘
互联网时代,越来越多的商家开始通过各种各样的线上营销活动来吸引客户,提高销量,比如抽奖活动、投票活动、拼团活动、秒杀活动等,其中抽奖活动广受商家与客户的喜爱,比较常见的便是幸运大转盘抽奖活动。
愚公搬代码
2022/09/23
9990
微信小程序|抽奖大转盘实战
在抽奖的应用或小程序中,大多会采用一种常见的大转盘抽奖方式,这种方式能直观展现出这个抽奖活动的形式和内容,且能直接吸引人参与。那么这个功能是如何实现的呢?
算法与编程之美
2020/05/29
6.2K1
微信小程序|抽奖大转盘实战
用CSS实现一个抽奖转盘(附详细代码+思路)
原文:https://www.cnblogs.com/wenruo/p/9732704.html
zz_jesse
2020/12/08
7.1K0
用CSS实现一个抽奖转盘(附详细代码+思路)
每日分享html特效篇1个侧边栏菜单+2个导航栏+1个登录页面+6个加载
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。 2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。 3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。 4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
淼学派对
2022/11/20
3.7K0
每日分享html特效篇1个侧边栏菜单+2个导航栏+1个登录页面+6个加载
❤️创意网页:生日快乐!穿越奇妙时光的温暖庆祝(HTML+CSS+JS)简单好用
在这个名为《生日快乐:穿越奇妙时光的温暖庆祝》的博客中,我将以独特的创意和令人难忘的效果,为你带来一场难以忘怀的生日庆祝活动。通过令人陶醉的视觉效果、动人的文字和倒计时提醒,希望为你的生日庆祝增添温暖、喜悦和难忘的回忆。
命运之光
2024/03/20
1.9K0
❤️创意网页:生日快乐!穿越奇妙时光的温暖庆祝(HTML+CSS+JS)简单好用
每日分享html之2个加载、2个button、1个鼠标定向
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。 2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。 3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。 4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
淼学派对
2022/11/20
1.1K0
每日分享html之2个加载、2个button、1个鼠标定向
HTML+CSS+JS 实现登录注册界面[通俗易懂]
鉴于小伙伴们没有csdn积分,我把代码压缩成了一个压缩包,放在了gitee上面,需要的请点击下载 点击下载
全栈程序员站长
2022/09/13
26.6K0
HTML+CSS+JS 实现登录注册界面[通俗易懂]
CSS3.0实现一个有趣特效
给大家分享一个用CSS3.0实现一个有趣特效,以下是代码实现。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title>
越陌度阡
2022/03/09
1940
每日分享html之2个悬停、2个加载、1个button
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。 2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。 3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。 4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
淼学派对
2022/11/20
1.1K0
每日分享html之2个悬停、2个加载、1个button
用Javascript和css3实现一个转盘小游戏
本文技术路线采用和上篇文章教你用200行代码写一个爱豆拼拼乐H5小游戏(附源码)同样的技术,即均使用本人自己写的dom库去简化dom操作,具体需要掌握的知识点有:
徐小夕
2019/08/07
2.9K0
用Javascript和css3实现一个转盘小游戏
用 UniApp 实现一个炫酷的做决定转盘
你是否也曾在朋友聚会上遇到选择困难症?今天吃什么、去哪玩,这些琐事总让人犯难。那如果我们有个决策转盘,是不是瞬间逼格满满?让转盘来决定一切,省心又有趣!本文就来带你实现这样一个小工具——一个炫酷的做决定转盘!
繁依Fanyi
2024/10/13
5030
html+css实现指针时钟
周末时间,突然想用html+css实现一个简单的指针时钟的功能,以下是具体代码实现,最后附有线上链接地址。
用户1174387
2022/06/06
1.4K0
html+css实现指针时钟
【前端攻略--HTML/CSS】这是你需要的transform学习教程
transition语法格式:transition: property duration timing-function delay;
野原测试开发
2019/07/10
1.1K0
大转盘设置漂浮物
大转盘.jpg 选择漂浮物.jpg <!--大转盘--> <div class="shareLeft"> <div class="sharePosition"> <div class="shareBigTitle"> 幸运大转盘 </div> </div> <div class="shareBg"> </div> <div class="shareInside"> <div class="
lyudev
2022/08/04
2.4K0
大转盘设置漂浮物
基于 HTML+CSS+JS 的纸牌记忆游戏
这节博客我们将使用 HTML、CSS 和 JavaScript 制作纸牌记忆游戏。
海拥
2022/04/13
3K0
基于 HTML+CSS+JS 的纸牌记忆游戏
一张图不用,纯CSS 做个生日贺卡
朋友生日了,直接画,炫技并且表示本人闲的全身疼才会去拿CSS画画,以此嘲弄对方的加班:
1_bit
2022/06/12
6160
一张图不用,纯CSS 做个生日贺卡
JavaScript+HTML+CSS实现12种常见加载画面
在现代Web开发中,加载动画不仅可以提升用户体验,还能在后台处理数据时有效地吸引用户注意力。本篇博客将通过原生的JavaScript、HTML和CSS技术,详细介绍12种常见的加载中画面的实现方法。这些动画不仅实用,还可以为我们的Web应用增添一份专业的感觉。
Damon小智
2024/08/19
9040
JavaScript+HTML+CSS实现12种常见加载画面
Js 简单的转盘抽奖
<style> .wrap { position: relative; /* display: flex; justify-content: center; align-items: center; */ width: 450px; height: 450px; background-color: pink; } #start { position: ab
hss
2022/02/25
6.6K0
HTML5+CSS3学习总结(完结)
万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,作为HTML语言,具有新的元素、属性和行为。
全栈程序员站长
2022/07/25
2.7K0
HTML5+CSS3学习总结(完结)
前端|如何用HTML打印一个六边形
六边形在我们网页的制作中,运用得并不是特别广泛。但在一些制作精美,要求创新的一些网页上,我们还是不难看到六边形的身影,如下图1.1所示。用六边形组合的蜂窝状图形,相对来说可能运用的范围应该是最广的。下面我们就来介绍一下如何用HTML打印六边形吧。
算法与编程之美
2019/11/07
1.3K0
前端|如何用HTML打印一个六边形
相关推荐
【愚公系列】2022年08月 微信小程序项目篇-抽奖轮盘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档