html js css带指针抽奖大转盘

时间: 2023-09-06 09:10:15 浏览: 57
好的,下面是一个简单的 HTML、CSS、JS 实现的带指针抽奖大转盘: HTML: ```html <div class="container"> <div class="wheel"> <div class="section"><span>1</span></div> <div class="section"><span>2</span></div> <div class="section"><span>3</span></div> <div class="section"><span>4</span></div> <div class="section"><span>5</span></div> <div class="section"><span>6</span></div> <div class="section"><span>7</span></div> <div class="section"><span>8</span></div> </div> <div class="pointer"></div> </div> <button class="btn" onclick="spin()">抽奖</button> ``` CSS: ```css .container { position: relative; width: 300px; height: 300px; margin: 50px auto; } .wheel { position: relative; width: 100%; height: 100%; border-radius: 50%; overflow: hidden; transform-style: preserve-3d; animation: spin 5s ease-out forwards; } .section { position: absolute; width: 100%; height: 100%; transform-origin: 50% 100%; font-size: 24px; font-weight: bold; text-align: center; background-color: #f7c4d8; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); } .section:nth-child(1) { transform: rotate(0deg); } .section:nth-child(2) { transform: rotate(45deg); } .section:nth-child(3) { transform: rotate(90deg); } .section:nth-child(4) { transform: rotate(135deg); } .section:nth-child(5) { transform: rotate(180deg); } .section:nth-child(6) { transform: rotate(225deg); } .section:nth-child(7) { transform: rotate(270deg); } .section:nth-child(8) { transform: rotate(315deg); } .section span { display: block; margin-top: 50%; transform: translateY(-50%); } .pointer { position: absolute; top: 0; left: 50%; width: 5px; height: 100%; background-color: red; transform-origin: 50% 0%; transform: translateX(-50%); } .btn { display: block; margin: 20px auto; padding: 10px 20px; font-size: 16px; border: none; border-radius: 10px; background-color: #f7c4d8; color: #fff; cursor: pointer; } @keyframes spin { to { transform: rotate(2160deg); } } ``` JS: ```js const wheel = document.querySelector('.wheel'); const pointer = document.querySelector('.pointer'); const btn = document.querySelector('.btn'); function spin() { // 随机旋转角度 const angle = Math.floor(Math.random() * 360) + 360 * 5; wheel.style.transform = `rotate(${angle}deg)`; } // 监听动画结束事件 wheel.addEventListener('animationend', () => { // 获取当前旋转角度 const angle = getComputedStyle(wheel).transform; const match = angle.match(/matrix\((.*)\)/); const values = match ? match[1].split(', ') : []; const a = values[0]; const b = values[1]; const c = values[2]; const d = values[3]; const radians = Math.atan2(b, a); const degrees = radians * (180 / Math.PI); const angleDeg = degrees < 0 ? degrees + 360 : degrees; // 根据旋转角度计算指针角度 pointer.style.transform = `rotate(${360 - angleDeg}deg)`; }); btn.addEventListener('click', spin); ``` 这个抽奖大转盘会随机旋转一定角度,并且在动画结束后根据旋转角度计算指针的角度。你只需要在 HTML 中添加需要的奖项,修改 CSS 样式,就可以自定义你的大转盘了。

相关推荐

最新推荐

recommend-type

前端HTML5+CSS+JavaScript学习笔记.docx

前端HTML5+CSS+JavaScript详细学习笔记,来自菜鸟教程、w3cSchool和b站视频教程的总结,包括基础知识和示例代码,欢迎大家指正
recommend-type

纯js+html和纯css+html制作手风琴效果

本文分享了纯js+html制作手风琴和纯css+html制作手风琴两种效果,供大家参考,具体内容如下 一、纯css+html的手风琴效果 这种用css写的手风琴比较简单,主要是应用到css中的,transition属性。 代码如下: &lt;!...
recommend-type

利用js+css+html实现固定table的列头不动

2、Javascript [removed] //该函数在上面一个table数据加载完成后调用 //把表头的宽度设置到会滚动的页头去 var copyWidth = function () { var b = $('#data_tbody').prev().find('tr:last').fi
recommend-type

html5+css3面试题答案.docx

html5+css3面试题答案.docx
recommend-type

基于html和CSS3制作酷炫的导航栏

 5 使用html + css3 渐变画图 制作背景图片  6 更改颜色透明度  7 DIV制作边框阴影 先看效果图:   CSS Code复制内容到剪贴板 &lt;!doctype html&gt;  html lang="en"&gt;  &lt;head&gt;  &lt;meta ...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。