js仿微信抢红包功能
发布时间 - 2026-01-11 03:29:01 点击率:次本文实例为大家分享了js仿微信抢红包功能的具体代码,供大家参考,具体内容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>仿微信抢红包</title>
<style>
html,body,div{margin:0;padding:0;}
body{background:#EAEAEA;font:16px/1.8 "微软雅黑";padding-bottom:20px}
input{margin:0;display:inline-block;border:1px solid #ddd;padding:4px 2px;font-size:16px;font-family:"微软雅黑";margin-right: 5px;}
input:focus{border-color:#3C9BD1;outline:none;}
.wrap,.list { margin: 50px auto; width: 300px;}
.title{ font-size: 42px; color: #464646;text-align: center;}
.line{height:40px;line-height:40px;text-align: center;}
.btn{display:block;background:#3C9BD1;color:#fff;line-height: 40px;height:40px;text-align: center;width:200px;margin:0 auto;margin-top:50px;text-decoration: none;transition:all .3s linear;border-radius: 2px;}
.btn:hover{opacity:.9;}
.list{width:500px;border:1px solid #DBDBDB;padding:10px;BACKGROUND:#F5F5F5;text-align: center;}
.list p span {color: red; padding: 0 8px;}
.list p:empty{background: #000000;}
.list:empty{display: none;}
.link{position:fixed;height:20px;font-size: 12px;color:#999;text-align: center;width: 100%;bottom:0;line-height:20px;margin:0;padding:0; background: #EAEAEA;padding:5px 0;}
.link a{font-size:12px;color:#999;}
</style>
</head>
<body>
<h1 class="title">javascript实现仿微信抢红包</h1>
<div class="wrap">
<div class="line">红包个数:<input type="text" name="packetNumber" value="5" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" maxlength="10">个</div>
<div class="line">总 金 额:<input type="text" name="money" value="5" onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')" maxlength="10">元</div>
<div class="line"><a class="btn" href="javascript:;" rel="external nofollow" >发红包</a></div>
</div>
<div class="list"></div>
<p class="link">参考<a target="_blank" href="https://www.zybuluo.com/yulin718/note/93148">《微信红包的架构设计简介》</a>文章</p>
<script>
"use strict";
var _createClass = function() {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function(Constructor, protoProps, staticProps) {
if (protoProps)
defineProperties(Constructor.prototype, protoProps);
if (staticProps)
defineProperties(Constructor, staticProps);
return Constructor;
}
;
}();
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var MoneyPacket = function() {
function MoneyPacket(packNumber, money) {
_classCallCheck(this, MoneyPacket);
this.min = 0.01;
this.flag = true;
this.packNumber = packNumber;
this.money = money;
if (!this.checkPackage()) {
this.flag = false;
return {
"flag": this.flag
};
}
}
_createClass(MoneyPacket, [{
key: "checkPackage",
value: function checkPackage() {
if (this.packNumber == 0) {
alert("至少需要设置1个红包");
return false;
}
if (this.money <= 0) {
alert("红包总金额不能小于0");
return false;
}
if (this.packNumber * this.min > this.money) {
alert("单个红包金额不可低于0.01元");
return false;
}
return true;
}
}]);
return MoneyPacket;
}();
var getRandomMoney = function getRandomMoney(packet) {
if (packet.packNumber == 0) {
return;
}
if (packet.packNumber == 1) {
var _lastMoney = Math.round(packet.money * 100) / 100;
packet.packNumber--;
packet.money = 0;
return _lastMoney;
}
var min = 0.01
,
max = packet.money / packet.packNumber * 2
,
money = Math.random() * max;
money = money < min ? min : money;
money = Math.floor(money * 100) / 100;
packet.packNumber--;
packet.money = Math.round((packet.money - money) * 100) / 100;
return money;
}
;
(function() {
var oBtn = document.querySelector(".btn");
var oList = document.querySelector(".list");
oBtn.onclick = function() {
var packetNumber = +document.querySelector("input[name=packetNumber]").value;
var money = +document.querySelector("input[name=money]").value;
var str = "";
var packet = new MoneyPacket(packetNumber,money)
,
num = packet.flag && packet.packNumber || 0;
console.log("========================================================================");
for (var i = 0; i < num; i++) {
var _pack = getRandomMoney(packet);
str += "<p>第<span>" + i + "</span>个红包:: <span>" + _pack.toFixed(2) + "</span>元  ==剩余红包:: <span>" + packet.money.toFixed(2) + "</span> 元<p>";
console.log("第", i, "个红包::", _pack.toFixed(2), "元 ==剩余红包::", packet.money.toFixed(2), "元");
}
str !== "" && (oList.innerHTML = str);
}
;
})();
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 微信
# 红包
# 使用AutoJs实现微信抢红包的代码
# 基于js实现抽红包并分配代码实例
# js canvas实现红包照片效果
# js+css实现红包雨效果
# JavaScript实现微信红包算法及问题解决方法
# 利用adb shell和node.js实现抖音抢红包功能(推荐)
# Javascript网页抢红包外挂实现分享
# js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
# 基于JavaScript实现微信抢红包功能
# js实现指定红包顺序和金额算法
# 微软
# 抢红包
# 大家分享
# 具体内容
# 大家多多
# 总金额
# 发红包
# center
# align
# text
# line
# btn
# height
# wrap
# list
# outline
# color
# focus
# width
# auto
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
如何在Windows 2008云服务器安全搭建网站?
如何用搬瓦工VPS快速搭建个人网站?
北京的网站制作公司有哪些,哪个视频网站最好?
详解Oracle修改字段类型方法总结
Python高阶函数应用_函数作为参数说明【指导】
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Android使用GridView实现日历的简单功能
Laravel storage目录权限问题_Laravel文件写入权限设置
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
EditPlus中的正则表达式 实战(4)
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
大型企业网站制作流程,做网站需要注册公司吗?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
如何用PHP快速搭建CMS系统?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
黑客入侵网站服务器的常见手法有哪些?
,怎么在广州志愿者网站注册?
浅谈Javascript中的Label语句
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel如何实现本地化和多语言支持?(i18n教程)
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel如何创建自定义Facades?(详细步骤)
如何在IIS管理器中快速创建并配置网站?
如何为不同团队 ID 动态生成多个非值班状态按钮
中山网站推广排名,中山信息港登录入口?
利用vue写todolist单页应用
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
如何用虚拟主机快速搭建网站?详细步骤解析
常州企业网站制作公司,全国继续教育网怎么登录?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何在IIS中新建站点并配置端口与物理路径?
如何在腾讯云免费申请建站?
Laravel安装步骤详细教程_Laravel环境搭建指南
南京网站制作费用,南京远驱官方网站?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
如何快速搭建自助建站会员专属系统?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
javascript中的try catch异常捕获机制用法分析
深入理解Android中的xmlns:tools属性

