大转盘.jpg
选择漂浮物.jpg
<!--大转盘-->
<div class="shareLeft">
<div class="sharePosition">
<div class="shareBigTitle">
幸运大转盘
</div>
</div>
<div class="shareBg">
</div>
<div class="shareInside">
<div class="moneybox" id="leafContainer"></div>
<div class="shareBgTitle"><img src="../img/lottery1.png"></div>
<div class="turntable">
<div class="bg"></div>
<div class="content1">
<img src="http://cdn.choujiangle.cn/images/prize/default/gift.png" id="fen-img" style="display:none;">
<img src="http://cdn.choujiangle.cn/images/prize/default/red-packet.png" id="zuliao-img" style="display:none;">
<img src="http://cdn.choujiangle.cn/images/prize/default/yuanbao2.png" id="baowen-img" style="display:none;">
<img src="http://cdn.choujiangle.cn/images/prize/default/yuanbao.png" id="yundou-img" style="display:none;">
<img src="http://cdn.choujiangle.cn/images/prize/default/yuanbao2.png" id="ganlan-img" style="display:none;">
<img src="http://cdn.choujiangle.cn/images/prize/default/yuanbao3.png" id="yusan-img" style="display:none;">
<div class="banner">
<div class="turnplate">
<canvas class="item" id="wheelcanvas" width="422px" height="422px"></canvas>
<img class="pointer" src="../img/button.png">
</div>
</div>
</div>
</div>
<div class="chance">
您还有<span> 1 </span>次机会
</div>
<div class="countDownDiv">
<div class="countDown" id="countDown">
活动<span class="mainColor">结束</span>倒计时 <span><span class="bg-color">0</span> 天 <span class="bg-color">0</span> 时 <span class="bg-color">0</span> 分 <span class="bg-color">0</span> 秒</span>
</div>
</div>
<div class="activityRulesDiv">
<div class="activityRules">
活动规则
</div>
<div class="activityRulesText">
<p><span>活动规则文字</span><img src="../img/message.jpg" style="max-width: 100%;"></p>
</div>
</div>
</div>
<div class="copyRight">
提供技术支持
</div>
</div>
<!--设置漂浮物-->
<div class="settingRow">
<div class="title1">
<span>漂浮物</span>
</div>
<div class="settingRowRight">
<div class="settingRadioDiv">
<div class="settingRadioList settingRadioList2">
<input type="radio" name='flotageOn' id="flotageOn" checked value="0">
<label for="flotageOn">开启</label>
</div>
<div class="settingRadioList settingRadioList2">
<input type="radio" name='flotageOn' id="flotageOff" value="1">
<label for="flotageOff">关闭</label>
</div>
</div>
<div class="flotageDiv">
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/huangguan.png" class="el-tooltip item" aria-describedby="el-tooltip-72" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/xin.png" class="el-tooltip item" aria-describedby="el-tooltip-2729" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/xuehua.png" class="el-tooltip item" aria-describedby="el-tooltip-7932" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/jinbi.png" class="el-tooltip item" aria-describedby="el-tooltip-3654" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/hongbao.png" class="el-tooltip item" aria-describedby="el-tooltip-4565" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/jiangbei.png" class="el-tooltip item" aria-describedby="el-tooltip-7373" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/denglong.png" class="el-tooltip item" aria-describedby="el-tooltip-7653" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/yuanbao.png" class="el-tooltip item" aria-describedby="el-tooltip-6615" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/aixin.png" class="el-tooltip item" aria-describedby="el-tooltip-2199" tabindex="0"></div>
<div class="decorate"><img src="//cdn.choujiangle.cn/decorate/denglong2.png" class="el-tooltip item" aria-describedby="el-tooltip-8904" tabindex="0"></div>
</div>
</div>
</div>
/**大转盘开始**/
.shareInside {
overflow: hidden;
overflow-y: auto;
height: 513px;
bottom: 103px;
left: 26px;
position: absolute;
width: 320px;
}
.shareBigTitle {
position: absolute;
left: 50%;
top: 108px;
transform: translate(-50%, -50%);
font-size: 16px;
}
.shareContainer {
display: flex;
justify-content: space-between;
}
.shareLeft {
width: 372px;
height: 744px;
background: url(../img/phone_bg.png) no-repeat;
position: relative;
margin: 30px auto;
}
.sharePosition {
width: 100%;
text-align: center;
font-size: 18px;
}
.shareBg {
position: absolute;
top: 128px;
width: 320px;
background: url(../img/dzp1-bg.png) no-repeat;
background-size: 100% 100%;
bottom: 103px;
left: 26px;
}
.shareBgTitle {
text-align: center;
}
.shareBgTitle img {
width: 75%;
margin-top: 25px;
}
.turntable {
width: 252px;
height: 252px;
margin: -20px auto 0;
}
.turntable .zhuanpan {
-webkit-transition: -webkit-transform 6s ease;
transition: -webkit-transform 6s ease;
transition: transform 6s ease;
transition: transform 6s ease, -webkit-transform 6s ease;
-webkit-transition: transform 6s ease;
}
@-webkit-keyframes xuanzhuan {
from {
-webkit-transform: rotate(0turn);
transform: rotate(0turn);
-webkit-transition: rotate(0turn);
}
to {
-webkit-transform: rotate(1turn);
transform: rotate(1turn);
-webkit-transition: rotate(1turn);
}
}
@keyframes xuanzhuan {
from {
-webkit-transform: rotate(0turn);
transform: rotate(0turn);
-webkit-transition: rotate(0turn);
}
to {
-webkit-transform: rotate(1turn);
transform: rotate(1turn);
-webkit-transition: rotate(1turn);
}
}
.turntable .bg {
width: 100%;
height: 100%;
background: url(../img/turntable-outer-bg2.png) no-repeat;
background-size: cover;
-webkit-animation: xuanzhuan 5s linear infinite;
animation: xuanzhuan 5s linear infinite;
margin-top: 41px;
}
.banner {
width: 240px;
height: 240px;
position: absolute;
left: 50%;
top: 238px;
overflow: hidden;
transform: translate(-50%, -50%);
}
.banner .turnplate {
display: block;
width: 100%;
position: relative;
}
.banner .turnplate canvas.item {
width: 100%;
}
.banner .turnplate img.pointer {
position: absolute;
width: 56px;
left: 50%;
top: 47%;
transform: translate(-50%, -50%);
}
#sbtn {
position: absolute;
top: 85%;
text-align: center;
width: 100%;
}
#sbtn img {
width: 24%;
margin: 0 20px;
}
.content1 {
width: 0px;
height: 0px;
}
.chance {
margin: 10px auto 0px;
color: #fff;
width: 157px;
text-align: center;
font-size: 14px;
background-color: #fea603;
border-radius: 1rem;
height: 26px;
line-height: 26px;
letter-spacing: 0.05rem;
}
.countDownDiv {
overflow: hidden;
margin: 10px auto;
width: 278px;
height: 48px;
}
.countDown {
height: 47px;
line-height: 47px;
background-color: #fff;
margin: 0 auto;
text-align: center;
border-radius: 5px;
color: #5d6a73;
font-size: 12px;
}
.countDown .mainColor {
color: #fa3d3e;
}
.bg-color {
background-color: #fa3d3e;
color: #fff;
border-radius: 3px;
padding: 2px 5px;
}
.copyRight {
height: 26px;
line-height: 26px;
text-align: center;
color: #999;
background: #f9f9f9;
position: absolute;
width: calc(100% - 52px);
background-size: 100% 100%;
bottom: 103px;
left: 26px;
font-size: 12px;
}
.shareBtn {
display: flex;
justify-content: center;
}
.activityRulesDiv {
margin: 40px auto 40px;
font-size:14px;
border: 3px solid #ffff96;
background-color: #fff;
width: 246px;
border-radius:3px;
}
.activityRules {
background: url(../img/activityRulesBg.png) no-repeat;
background-size: 100% 100%;
text-align: center;
width: 60%;
height: 30px;
margin: -20px auto 0;
}
.activityRulesText {
padding: 10px 5px;
}
#leafContainer {
position: absolute;
width: 100%;
height: calc(100% - 26px);
overflow: hidden;
}
#leafContainer > div {
position: absolute;
width:20px;
height: 20px;
z-index: 999;
-webkit-animation-iteration-count: infinite, infinite;
-webkit-animation-direction: normal, normal;
-webkit-animation-timing-function: linear, ease-in;
}
#leafContainer > div > img {
position: absolute;
width: 20px;
height: 20px;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-timing-function: ease-in-out;
-webkit-transform-origin: 50% -100%;
}
@-webkit-keyframes fade {
0% {
opacity: 1;
}
95% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@-webkit-keyframes drop {
0% {
-webkit-transform: translate(0px, -50px);
}
100% {
-webkit-transform: translate(0px, 650px);
}
}
@-webkit-keyframes clockwiseSpin {
0% {
-webkit-transform: rotate(-50deg);
}
100% {
-webkit-transform: rotate(50deg);
}
}
@-webkit-keyframes counterclockwiseSpinAndFlip {
0% {
-webkit-transform: scale(-1, 1) rotate(50deg);
}
100% {
-webkit-transform: scale(-1, 1) rotate(-50deg);
}
}
/**大转盘结束**/
.settingRow {
display: flex;
align-items: baseline;
align-content: center;
justify-content: flex-start;
margin-bottom: 10px;
}
.settingRowRight {
width: 719px;
}
.title1 {
width: 120px;
margin: 0px !important;
font-size: 14px;
color: #333;
line-height: 30px;
}
.settingRadioDiv {
display: flex;
align-items: center;
margin: 10px 0;
width: 100%;
height: 20px;
line-height: 20px;
}
.settingRadioList {
display: flex;
align-items: center;
margin: 0px 20px 0px 0px;
}
.flotageDiv {
height: 110px;
background: #ffffff;
border: 1px solid #e3e4e9;
overflow: hidden;
}
.decorate {
float:left;
cursor: pointer;
padding: 5px;
margin-bottom: 3px;
}
.decorate:hover{
background-color: #DCEFFB;
border-radius: 2px;
}
.decorate img {
width: 24px;
height: 24px;
border:none;
}
//大转盘活动
var turnplate = {
restaraunts: [], //大转盘奖品名称
colors: [], //大转盘奖品区块对应背景颜色
outsideRadius: 192, //大转盘外圆的半径
textRadius: 155, //大转盘奖品位置距离圆心的距离
insideRadius: 30, //大转盘内圆的半径
startAngle: 0, //开始角度
bRotate: false //false:停止;ture:旋转
};
$(document).ready(function () {
//动态添加大转盘的奖品与奖品区域背景颜色
turnplate.restaraunts = ["20积分", "足疗机", "20积分", "保温杯", "20积分", "电熨斗", "20积分 ", "橄榄油", "20积分"];
turnplate.colors = ["#d7d7d7", "#fef43e", "#ef7683", "#d7d7d7", "#fef43e", "#ef7683", "#d7d7d7", "#fef43e", "#ef7683",];
var rotateTimeOut = function () {
$('#wheelcanvas').rotate({
angle: 0,
animateTo: 2160,
duration: 8000,
callback: function () {
alert('网络超时,请检查您的网络设置!');
}
});
};
//旋转转盘 item:奖品位置; txt:提示语;
var rotateFn = function (item, txt) {
var angles = item * (360 / turnplate.restaraunts.length) - (360 / (turnplate.restaraunts.length * 2));
if (angles < 270) {
angles = 270 - angles;
} else {
angles = 360 - angles + 270;
}
$('#wheelcanvas').stopRotate();
$('#wheelcanvas').rotate({
angle: 0,
animateTo: angles + 1800,
duration: 8000,
callback: function () {
//中奖提示
alert(txt);
turnplate.bRotate = !turnplate.bRotate;
}
});
};
$('.pointer').click(function () {
if (turnplate.bRotate) return;
turnplate.bRotate = !turnplate.bRotate;
//获取随机数(奖品个数范围内)
var item = rnd(1, turnplate.restaraunts.length);
//奖品数量等于10,指针落在对应奖品区域的中心角度[252, 216, 180, 144, 108, 72, 36, 360, 324, 288]
rotateFn(item, turnplate.restaraunts[item - 1]);
});
});
function rnd(n, m) {
n = 1;//最小随机数
m = 100;//最大随机数(概率范围最大值)
//最大数数不超过最大随机数
var ransluck = [50, 60, 65, 70, 75, 80, 85, 90, 95, 100];//概率为比自己小的第一个数之间的差
var randoms = Math.floor(Math.random() * (m - n + 1) + n);
if (randoms <= ransluck[0]) {
var random = 1;
}
else if (randoms <= ransluck[1]) {
var random = 2;
}
else if (randoms <= ransluck[2]) {
var random = 3;
}
else if (randoms <= ransluck[3]) {
var random = 4;
}
else if (randoms <= ransluck[4]) {
var random = 5;
}
else if (randoms <= ransluck[5]) {
var random = 6;
}
else if (randoms <= ransluck[6]) {
var random = 7;
}
else if (randoms <= ransluck[7]) {
var random = 8;
}
else if (randoms <= ransluck[8]) {
var random = 9;
}
else if (randoms <= ransluck[9]) {
var random = 10;
}
return random;
}
//页面所有元素加载完毕后执行drawRouletteWheel()方法对转盘进行渲染
window.onload = function () {
drawRouletteWheel();
};
function drawRouletteWheel() {
var canvas = document.getElementById("wheelcanvas");
if (canvas.getContext) {
//根据奖品个数计算圆周角度
var arc = Math.PI / (turnplate.restaraunts.length / 2);
var ctx = canvas.getContext("2d");
//在给定矩形内清空一个矩形
ctx.clearRect(0, 0, 422, 422);
//strokeStyle 属性设置或返回用于笔触的颜色、渐变或模式
ctx.strokeStyle = "#FFBE04";
//font 属性设置或返回画布上文本内容的当前字体属性
ctx.font = '20px Microsoft YaHei';
for (var i = 0; i < turnplate.restaraunts.length; i++) {
var angle = turnplate.startAngle + i * arc;
ctx.fillStyle = turnplate.colors[i];
ctx.beginPath();
//arc(x,y,r,起始角,结束角,绘制方向) 方法创建弧/曲线(用于创建圆或部分圆)
ctx.arc(211, 211, turnplate.outsideRadius, angle, angle + arc, false);
ctx.arc(211, 211, turnplate.insideRadius, angle + arc, angle, true);
ctx.stroke();
ctx.fill();
//锁画布(为了保存之前的画布状态)
ctx.save();
//----绘制奖品开始----
ctx.fillStyle = "#000";
var text = turnplate.restaraunts[i];
var line_height = 17;
//translate方法重新映射画布上的 (0,0) 位置
ctx.translate(211 + Math.cos(angle + arc / 2) * turnplate.textRadius, 211 + Math.sin(angle + arc / 2) * turnplate.textRadius);
//rotate方法旋转当前的绘图
ctx.rotate(angle + arc / 2 + Math.PI / 2);
/** 下面代码根据奖品类型、奖品名称长度渲染不同效果,如字体、颜色、图片效果。(具体根据实际情况改变) **/
if (text.indexOf("M") > 0) {//流量包
var texts = text.split("M");
for (var j = 0; j < texts.length; j++) {
ctx.font = j == 0 ? 'bold 12px Microsoft YaHei' : '16px Microsoft YaHei';
if (j == 0) {
ctx.fillText(texts[j] + "M", -ctx.measureText(texts[j] + "M").width / 2, j * line_height);
} else {
ctx.fillText(texts[j], -ctx.measureText(texts[j]).width / 2, j * line_height);
}
}
} else if (text.indexOf("M") == -1 && text.length > 6) {//奖品名称长度超过一定范围
text = text.substring(0, 6) + "||" + text.substring(6);
var texts = text.split("||");
for (var j = 0; j < texts.length; j++) {
ctx.fillText(texts[j], -ctx.measureText(texts[j]).width / 2, j * line_height);
}
} else {
//在画布上绘制填色的文本。文本的默认颜色是黑色
//measureText()方法返回包含一个对象,该对象包含以像素计的指定字体宽度
ctx.fillText(text, -ctx.measureText(text).width / 2, 0);
}
//添加对应图标
if (text.indexOf("分") > 0) {
var img = document.getElementById("fen-img");
img.onload = function () {
ctx.drawImage(img, -18, 25, 36, 36);
};
ctx.drawImage(img, -18, 25, 36, 36);
} else if (text.indexOf("足疗") >= 0) {
var img = document.getElementById("zuliao-img");
img.onload = function () {
ctx.drawImage(img, -18, 25, 36, 36);
};
ctx.drawImage(img, -18, 25, 36, 36);
}
else if (text.indexOf("保温") >= 0) {
var img = document.getElementById("baowen-img");
img.onload = function () {
ctx.drawImage(img, -18, 25, 36, 36);
};
ctx.drawImage(img, -18, 25, 36, 36);
}
else if (text.indexOf("电熨斗") >= 0) {
var img = document.getElementById("yundou-img");
img.onload = function () {
ctx.drawImage(img, -18, 25, 36, 36);
};
ctx.drawImage(img, -18, 25, 36, 36);
}
else if (text.indexOf("橄榄") >= 0) {
var img = document.getElementById("ganlan-img");
img.onload = function () {
ctx.drawImage(img, -18, 25, 36, 36);
};
ctx.drawImage(img, -18, 25, 36, 36);
}
else if (text.indexOf("雨伞") >= 0) {
var img = document.getElementById("yusan-img");
img.onload = function () {
ctx.drawImage(img, -18, 25, 36, 36);
};
ctx.drawImage(img, -18, 25, 36, 36);
}
//把当前画布返回(调整)到上一个save()状态之前
ctx.restore();
//----绘制奖品结束----
}
}
}
//大转盘倒计时
const fourthOfJuly = new Date("July 4, 2021 12:00:00").getTime();
let timer = setInterval(function () {
const today = new Date().getTime();
const diff = fourthOfJuly - today;
let days = Math.floor(diff / (1000 * 60 * 60 * 24));
let hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
let minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
let seconds = Math.floor((diff % (1000 * 60)) / 1000);
document.getElementById("countDown").innerHTML = ' 活动<span class="mainColor">结束</span>倒计时 <span><span class="bg-color">' + days + '</span> 天 <span class="bg-color">' + hours + '</span> 时 <span class="bg-color">' + minutes + '</span> 分 <span class="bg-color">' + seconds + '</span> 秒</span></div>'
}, 1000);
//漂浮物
const NUMBER_OF_LEAVES = 80;
const width = window.screen.width;
function randomInteger(low, high) {
return low + Math.floor(Math.random() * (high - low));
}
function randomFloat(low, high) {
return low + Math.random() * (high - low);
}
function pixelValue(value) {
return value + 'px';
}
function durationValue(value) {
return value + 's';
}
function createALeaf() {
var leafDiv = document.createElement('div');
var image = document.createElement('img');
image.src = '//cdn.choujiangle.cn/decorate/huangguan.png';
image.src = '';
leafDiv.style.top = "-100px";
leafDiv.style.left = pixelValue(randomInteger(0, width));
var spinAnimationName = (Math.random() < 0.5) ? 'clockwiseSpin' : 'counterclockwiseSpinAndFlip';
leafDiv.style.webkitAnimationName = 'fade, drop';
image.style.webkitAnimationName = spinAnimationName;
image.className = 'mask';
var fadeAndDropDuration = durationValue(randomFloat(3, 9));
var spinDuration = durationValue(randomFloat(3, 7));
leafDiv.style.webkitAnimationDuration = fadeAndDropDuration + ', ' + fadeAndDropDuration;
var leafDelay = durationValue(randomFloat(0, 0));
leafDiv.style.webkitAnimationDelay = leafDelay + ', ' + leafDelay;
image.style.webkitAnimationDuration = spinDuration;
leafDiv.appendChild(image);
leafDiv.className = "maskDiv";
return leafDiv;
}
function strat() {
var container = document.getElementById('leafContainer');
for (var i = 0; i < NUMBER_OF_LEAVES; i++) {
container.appendChild(createALeaf());
}
}
$("body").on("click", ".decorate img", function () {
var radioVal = $("input[name='flotageOn']:checked").val()
if (radioVal == 0) {
strat()
$(".mask").attr("src", $(this).prop("src"))
}
})
$(':radio[name="flotageOn"]').on('click', function () {
if ($(this).val() == 1) {
$(".maskDiv").css("display", 'none')
}
})