大转盘抽奖css3+js(简单书写)
今天花了一段时间简单写了下抽奖大转盘,这里写的只是自己想到的简单的写了下(也希望收获其他想法),后续,再写的话会更新。
大体思路:页面加载完成后,通过监听开始按钮的点击事件。然后会根据产生的随机数,通过控制旋转针对象的transform属性,然后进行旋转,最后在结束后获取存储来数组中对应的抽奖内容最后弹出。
知识点:transform, translation,js数组,Math等等
先看下效果,没有素材,只是用css简单的布了下局。不要喷我比较简陋,嘿嘿。

接下来是基本代码结构:
<div class="rotate_con">
<div class="rotate_row">
<div class="rotate_item">
RMB100
</div>
<div class="rotate_item">
流量100M
</div>
<div class="rotate_item">
谢谢参与
</div>
</div>
<div class="rotate_row">
<div class="rotate_item">
再接再厉
</div>
<div class="rotate_item item_start" id="start">
开始
<div class="rotate" id="rotate_zhen"> </div>
</div>
<div class="rotate_item">
RMB2
</div>
</div>
<div class="rotate_row">
<div class="rotate_item">
RMB100
</div>
<div class="rotate_item">
谢谢参与
</div>
<div class="rotate_item">
流量100M
</div>
</div>
</div>
接下来是样式:
<style>
* {
margin:;
padding:;
} .rotate_con {
margin: 50px auto;
width: 320px;
height: 320px;
border: 1px solid #FFFFFF;
border-radius: 50%;
} .rotate_row {
display: flex;
display: -webkit-flex;
height: 33.3333333%;
} .rotate_item {
flex: 0 0 33.3333333%;
-webkit-flex: 0 0 33.3333333%;
line-height: 106.666666px;
text-align: center;
background: yellow;
padding: 1px;
border: 1px solid #fff;
box-sizing: border-box;
} .item_start {
position: relative;
background-color: #FF5E5E;
color: #FFFFFF;
font-weight: bold;
cursor: pointer
} .item_start:active {
background: #ED745B;
} .rotate {
position: absolute;
width: 5px;
height: 106px;
top: -53px;
left: 53px;
background: #fff;
transform: rotateZ(0deg);
transform-origin: left bottom;
-webkit-transform-origin: left bottom;
transition: all 1.5s cubic-bezier(0.25, 0.1, 0.25, 1);
} .item_active {
border-color: red;
}
</style>
最后js部分
<script>
//获取对象
var getid = function(id) {
return document.getElementById(id);
};
//按照旋转顺序的数组
var context = ["流量100M", "谢谢参与", "RMB2", "流量100M", "谢谢参与", "RMB100", "再接再厉", "RMB100"];
var deg = 45, //旋转的默认角度360/8
numdeg = 0, //记录上次旋转停止时候的角度
num = 0, //记录旋转后数组的位置
isRotated = false; //判断是否在进行中
window.onload = function() {
var zhen = getid("rotate_zhen");
getid("start").addEventListener('click', function() {
if(isRotated) return; //如果正在旋转退出程序
isRotated = true;
var index = Math.floor(Math.random() * 8); //得到0-7随机数
num = index + num; //得到本次位置
numdeg += index * deg + Math.floor(Math.random() * 3 + 1) * 360;
zhen.style.webkitTransform = zhen.style.transform = "rotateZ(" + numdeg + "deg)";
setTimeout(function() {
if(num >= 8) { //如果数组位置大于7就重新开始
num = num % 8;
}
alert(context[num]);
isRotated = false; //旋转改为false说明没有旋转
}, 1700)
}, false)
}
</script>
最后是测试结果:

大转盘抽奖css3+js(简单书写)的更多相关文章
- 纯CSS3大转盘抽奖(响应式、可配置)
源于前段时候微信小程序最初火爆公测时段,把以前用 Canvas 实现的大转盘抽奖移植成微信小程序,无奈当时小程序对 Canvas 支持不够完善,只好降低用 CSS3 实现.虽然比不上 Canvas 绘 ...
- 【Vue.js游戏机实战】- Vue.js实现大转盘抽奖总结
大家好!先上图看看本次案例的整体效果. 实现思路: Vue component实现大转盘组件,可以嵌套到任意要使用的页面. css3 transform控制大转盘抽奖过程的动画效果. 抽奖组件内使用钩 ...
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...
- jquery——九宫格大转盘抽奖
一.用到的图片 二.代码如下,重点是js部分 <!DOCTYPE html> <html> <head> <meta http-equiv="Con ...
- Java 实现大转盘抽奖
需要用到 JAVA中的Random()函数 注意:大转盘抽奖各奖项中奖概率之和为 1.奖品列表中的概率为累加概率,需要按照添加进列表的顺序进行累加,添加顺序不做要求. 实际中使用需要考虑奖品数量限制等 ...
- PHP实现大转盘抽奖算法实例
本文主要向大家介绍了PHP语言实现大转盘抽奖算法,通过具体的实例向大家展示,希望对大家学习PHP抽奖有所帮助. 流程:1.拼装奖项数组,2.计算概率,3.返回中奖情况 代码如下:中奖概率 ' v ' ...
- PHP+AJAX开发幸运大转盘抽奖
PHP+AJAX开发幸运大转盘抽奖,通过奖品库存.中奖次数来计算中奖概率 奖品设置 $prizes = array( 0 => array( "id" => 0, // ...
- 原生js轮盘抽奖实例分析(幸运大转盘抽奖)
效果图: 所需图片素材: 这张图是pointer.png的位置的. turntable-bg.jpg这张是转盘背景图,在背景位置. 这张是turntable.png位置的. 需要这三张图片,如果要实现 ...
- 小程序 大转盘 抽奖 canvas animation
项目需求运用到大转盘 可设置概率 可直接自定义结果 效果如下
随机推荐
- hdu 3450 后缀数组
题目大意: 求多个字符串的最长公共子串 基本思路: 参加我的博客hdu2774 代码如下: #include<cstdio> #include<cstring> using n ...
- 【NOIP2019模拟2019.9.4】B(期望的线性性)
题目描述: \(1<=n,ai<=5*10^5\) 题解: 我是弱智我不会期望线性. 设\(E(a[i])\)表示第i个期望被减的个数. \(E(a[1])=a[1]\) 不难发现\(E( ...
- JCF——Map
Hashtable LinkedHashMap Properties
- RichViewEdit
RichViewEdit特殊操作 RichviewEdit 图文保存操作 首先要转换成stream后才能对RichviewEdit进行正确的读和写 function SaveRVFToField(rv ...
- NX二次开发-Block UI C++界面Toggle(开关)控件的获取(持续补充)
NX9+VS2012 public: void SetBlockUIShow(); void ToggleInt::SetBlockUIShow() { //获取开关控件 //获取枚举控件 Prope ...
- MAC OpenGL 环境搭建
MAC OpenGL 环境搭建 基础库介绍 先要安装两个库一个是GLEW(OpenGL Extension Wrangler Library),另外一个是GLFW(Graphics Library F ...
- RocktMq安装和简单使用以及报错收集
文章目录 安装 使用 报错 总结: rocketmq内存设置 配置brockerip 启动方式 如果往机器上部署,最好再本地看看报错吗 关于防火墙 看总结去吧 安装 准备: jdk1.8 maven ...
- qemu的动态翻译机制
qemu的作者在QEMU, a Fast and Portable Dynamic Translator一文提到了qemu的动态翻译机制, 大致可以总结为如下过程: 目标代码中的一条指令 | |--( ...
- PAT_A1101#Quick Sort
Source: PAT A1101 Quick Sort (25 分) Description: There is a classical process named partition in the ...
- 前端(十九)—— Bootstrap框架
Bootstrap Bootstrap中文文档 一.简介 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML.CSS.JavaScrip ...