原生JS实现抽奖

1、效果展示 

    0. 制作一个MiniSize使用提供的素材实现一个转盘活动的布局(如下图所示);

  1. 进入界面后2秒钟后开始旋转,5秒钟后停止旋转;
  2. 并且3秒后进入一个表单界面(如下图2所示);
  3. 界面要求适配现主流的手机屏幕及手机浏览器;
  4. 要求界面切换连贯,动画流畅
  5. 请保证视觉效果的还原度以及代码整洁度

2、实现思路

  • 旋转圆盘,image1.style.animation = 'rotateAnimation 0.5s linear 10',来实现旋转
  • await阻塞进入表单的任务加入微任务队列,使得表盘先旋转玩了之后再跳转到表单页面
  • 进入表单界面,设置定时器为8s(5+3)包含了旋转转盘的时间旋转之后等待时间

这些完全都是自己设计的,哪里有错误和需要优化的欢迎批评指正,大家一起学习交流谢谢。

3、参考代码

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=0.8"><title>转盘活动</title><style>/* 在这里添加 CSS 样式 *//* 手机屏幕适配 */@media (max-width: 599px) {.container  {padding: 10px;}}#app {/* 容器元素的样式和布局 */display: flex;justify-content: center;align-items: center; /* 水平居中 */  align-content: center; /* 垂直居中 */  height: 100vh;margin: 0;color: #666666;}.image1 {position: absolute;}.image2 {position: relative;}.form {/* 表单界面样式 */margin-top: 10px;font-size: 16px; /* 设置字体大小 *//* border: 1px solid #ccc; *//* padding: 20px; */border-radius: 5px;height: 80%;width: 80%; /* 限制表单宽度 */}/* 背景颜色 */body {background-color: #E7E7E7;}/* 按钮样式 */.button {margin-top: 3px;width: 92%;background-color: #F03D3C;color: #FFFFFF;border: none;padding: 10px 20px;border-radius: 5px;cursor: pointer;}input{margin-top: 5px;padding: 10px 20px;border-radius: 5px;cursor: pointer;width: 80%;}select{margin-top: 5px;padding: 10px 20px;border-radius: 5px;cursor: pointer;width: 92%;}/* 边框样式 */.border {border: 1px solid #E5E5E5;padding: 10px;}@keyframes rotateAnimation {  from {  transform: rotate(0deg);  }  to {  transform: rotate(360deg);  }  }</style></head><body><div id="app"><div class="turntable"><!-- 转盘活动的内容 --><img class="image1" src="images/loto-p.png" alt=""><img class="image2" src="images/loto-z.png" alt=""></div><div class="form" style="display: none; "><form id="personalInfoForm"><label for="name">收货人姓名</label><br><input type="text" placeholder="收货人姓名" id="name" name="name" required><br><label for="email">手机号码</label><br><input type="tel"  placeholder="请输入您的手机号码" id="tel" name="tel" required><br><label for="age">手机验证码</label><br><input type="number"  placeholder="手机验证码" id="age" style="width: 35%;" name="age" required><input type="submit"  class="button" style="margin-left:2px;width: 44%;" value="获取验证码"><br><label for="address">选择地区</label><br><!-- <input type="text"  placeholder="省份"  id="age" name="age" required><br> --><!-- <input type="text"  placeholder="城市"  id="age" name="age" required><br> --><select id="province" name="province">  <option value="">省份</option>  <option value="省份1">省份1</option>  <option value="省份2">省份2</option>  <option value="省份3">省份3</option>  </select> <select id="city" name="city">  <option value="">城市</option>  <option value="城市1">城市1</option>  <option value="城市2">城市2</option>  <option value="城市3">城市3</option>  </select>  <br><label for="address">详细地址</label><br><input type="text"  placeholder="例如XX街道XX号" id="email" name="email" required><br><input type="submit"  class="button" value="提交"></form></div></div><script>var image1 = document.querySelector('.image1');var image2 = document.querySelector('.image2');var form = document.querySelector('.form');var angle = 0;  // 页面加载事件window.addEventListener('load', async function() {// 延迟 2 秒开始旋转5sawait startRotation()// 3 秒后显示表单界面showForm()  });function startRotation() {// 启动旋转动画的逻辑return new Promise(resolve => setTimeout(()=>{image1.style.animation = 'rotateAnimation 0.5s linear 10'resolve(); }, 2000))}function showForm() {// 显示表单界面的逻辑new Promise(resolve => setTimeout(()=>{ image1.style.display = 'none';image2.style.display = 'none';form.style.display = 'block';resolve(); }, 8000)); }</script></body>
</html>

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

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

相关文章

vins 实机测试 rs_d435 + imu

vins 实机测试 文章目录 1. imu标定2. camera内参标定3. imu-cam 外参标定4. vins 实际运行5. realsense 1. imu标定 git clone https://github.com/gaowenliang/code_utils.git git clone https://github.com/gaowenliang/imu_utils.git编译运行&#xff0c; roslaunch imu_…

Unity 圆角 线段 绘制 LineRender

需求 绘制圆角 核心函数 /// <summary>/// 点ABC 形成的角度必须为90 点c为中间的点/// </summary>/// <param name"a"></param>/// <param name"b"></param>/// <param name"c"></param>/// &…

CH08_管理状态

Observer 模式 观察者模式&#xff08;Observer&#xff09;&#xff0c;又叫发布订阅模式&#xff08;Publish/Sunscribe&#xff09;模式&#xff0c;定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时&#xf…

2个nodejs进程利用redis 实现订阅发布

1.新建文件 redis_db.js use strict;const redis require(redis); const options {host: "127.0.0.1",port: 6379,password: "123456", // CONFIG SET requirepass "123456" }var array [] for(var i0; i<3; i){const client redis.crea…

MySQL数据库的CURD、常见函数及UNION和UNION ALL

一、概述 MySQL是一种流行的关系型数据库管理系统&#xff0c;广泛应用于各种应用场景。在MySQL中&#xff0c;CURD操作是指创建&#xff08;Create&#xff09;、读取&#xff08;Read&#xff09;、更新&#xff08;Update&#xff09;和删除&#xff08;Delete&#xff09;…

安装extiverse/mercury时报错

问题描述 作者在安装 Flarum 的插件 extiverse/mercury 时报错&#xff0c;内容如下图所示 解决方案 ⚠警告&#xff1a;请备份所有数据再进行接下来的操作&#xff0c;此操作可能会导致网站不可用&#xff01; 报错原因&#xff1a;主要问题是在安装过程中解决依赖关系。具…

使用CentOS 7.6搭建HTTP隧道代理服务器

在现代网络环境中&#xff0c;HTTP隧道代理服务器因其灵活性和安全性而受到广泛关注。CentOS 7.6&#xff0c;作为一个稳定且功能强大的Linux发行版&#xff0c;为搭建此类服务器提供了坚实的基础。 首先&#xff0c;我们需要明确HTTP隧道代理的基本原理。HTTP隧道代理允许客户…

安科瑞变电站综合自动化系统在青岛海洋科技园应用——安科瑞 顾烊宇

摘 要&#xff1a;变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计&#xff0c;利用先进的计算机技术、通信技术、信号处理技术&#xff0c;实现对全变电站的主要设备和输、配电线路的自动监视、测量、控制、保护、并与上级调度通信的综合性自动化功能。 …

HarmonyOS应用开发之DevEco Studio安装与初次使用

1、DevEco Studio介绍 DevEco Studio是基于IntelliJ IDEA Community开源版本打造&#xff0c;面向华为终端全场景多设备的一站式集成开发环境&#xff08;IDE&#xff09;&#xff0c;为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用/服务的开发工具。…

剧本杀小程序/APP搭建,增加玩家游戏体验

近年来&#xff0c;剧本杀游戏成为了年轻人娱乐的新方式&#xff0c;受到了年轻人的追捧。 剧本杀是一种新型的社交游戏&#xff0c;在游戏中&#xff0c;玩家不仅可以进行角色扮演&#xff0c;也能够交到好友&#xff0c;符合当下年轻人的生活模式。 小程序、app是当下剧本杀…

idea 社区版 Database Navigator插件 列显示顺序错乱解决办法

idea 社区版 Database Navigator插件 列显示顺序错乱 影响&#xff1a;MyBatisCodeHelperPro插件生成代码字段顺序错乱 解决办法&#xff1a;将COLUMN 的排序方式由Name改为Position方式之后&#xff0c;reload即可&#xff01;

base zhixi mode, redo example on local standyalone PC

ref url: https://modelscope.cn/models/ZJUNLP/DeepKE-LLM/summary Linux增大Swap分区&#xff0c;增加虚拟内存&#xff0c;以解决内存不足等问题_增大swapfile能缓解内存不足吗-CSDN博客 Add Local visual RAM 100G: ##增加虚拟内存 mkdir /data/VisualRAM cd VisualRAM…

第一次使用缓存,因为没预热,翻车了

△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 437 篇原创分享 作者 l Hollis 来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09; 预热一般指缓存预热&#xff0c;一般用在高并发系统中&#xff0c;为了提升系统在高并发情况下的稳定性的一种手段。…

使用fabric.js实现对图片涂鸦、文字编辑、平移缩放与保存功能

文章目录 背景1.初始化画布1.创建画布2.设置画布大小 2.渲染图片3.功能&#xff1a;开启涂鸦4.功能&#xff1a;添加文字5.旋转图片6.画布平移7.画布缩放8.保存图片9.上传图片10.销毁实例11.总结 背景 项目中有个需求&#xff0c;需要对图片附件进行简单的编辑操作&#xff0c…

实战AI大模型:构建和优化深度学习巨兽的关键技术【文末送书-15】

文章目录 前言一.模型设计1.1 硬件加速1.2 模型部署 二.模型深度和宽度的平衡2.1引入注意力机制2.1 残差连接 三.实战AI大模型【文末送书-15】3.1 粉丝福利&#xff1a;文末推荐与福利免费包邮送书&#xff01; 前言 随着人工智能领域的迅猛发展&#xff0c;大规模深度学习模型…

《3D数学基础-图形和游戏开发》阅读笔记 | 3D数学基础 (学习中 1.5更新)

文章目录 3D数学基础矢量/向量概述 - 什么是向量单位矢量&#xff1a;只关注方向不关注大小 数学运算矢量的加法与减法减法的几何意义计算一个点到另一个点的位移矢量的点积与叉积 矩阵方阵几何意义 - 表示空间坐标的变换组合变换 矩阵的乘法变换的分类 矩阵的行列式 3D数学基础…

Linux第7步_设置虚拟机的电源

设置ubuntu代码下载源和关闭“自动检查更新”后&#xff0c;就要学习设置“虚拟机的电源”了。 用处不大&#xff0c;主要是了解”螺丝刀和扳手形状的图标“在哪里。 1、打开虚拟机&#xff0c;点击最右边的“下拉按钮”&#xff0c;弹出对话框&#xff0c;得到下图&#xff…

CEEMDAN +组合预测模型(CNN-Transformer + ARIMA)

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

栈的数据结构实验报告

一、实验目的&#xff1a; 1、理解栈的定义&#xff1b; 2、利用栈处理实际问题。 二、实验内容&#xff08;实验题目与说明&#xff09; 利用栈实现数据的分类&#xff0c;将输入的整数以奇偶为标准分别存放到两个栈中&#xff0c;并最终从栈1和栈2输出偶数和奇数序列。 …

原来圣诞树可以这么做

先看结果 从上到下依次是&#xff1a; 2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 ... 依次排下去&#xff0c;最后加4个单位数的数字 原来代码的世界里还有这个美。^V^