html抽奖代码实验原理,javascript圆盘抽奖程序实现原理和完整代码例子

抽奖

#container{width: 400px;height: 400px;position: relative;margin: 0 auto;}

#demo{position: absolute;filter: progid:DXImageTransform.Microsoft.Matrix(sizingmethod="auto expand");}

           

var m$ = function (id) { return document.getElementById(id); }

var ua = navigator.userAgent;

var isIE = /msie/i.test(ua) && !window.opera;

var i = 1, sinDeg = 0, cosDeg = 0, timer = null;

var mRotate = function () {

var rotate = function (target, msg) {

target = m$(target);

var orginW = target.clientWidth, orginH = target.clientHeight;

clearInterval(timer);

function run(angle) {

if (isIE) {

cosDeg = Math.cos(angle * Math.PI / 180);

sinDeg = Math.sin(angle * Math.PI / 180);

with (target.filters.item(0)) {

M11 = M22 = cosDeg; M12 = -(M21 = sinDeg);

}

target.style.top = (orginH - target.offsetHeight) / 2 + "px";

target.style.left = (orginW - target.offsetWidth) / 2 + "px";

} else if (target.style.MozTransform !== undefined) {

target.style.MozTransform = "rotate(" + angle + "deg)";

} else if (target.style.OTransform !== undefined) {

target.style.OTransform = "rotate(" + angle + "deg)";

} else if (target.style.webkitTransform !== undefined) {

target.style.webkitTransform = "rotate(" + angle + "deg)";

} else {

target.style.transform = "rotate(" + angle + "deg)";

}

}

var tmp = -900;

var m = -parseInt(Math.random() * 360);

timer = setInterval(function () {

if (i > 3000) {

tmp = parseInt(tmp * 0.99);

if (tmp > m) {

tmp = m;

clearInterval(timer);

msg(m);

}

run(tmp);

}

else if (i > 1000) {

i = i + 45;

run(i);

}

else {

i = parseInt((i + 1) * 1.01);

run(i);

}

}, 50);

}

return { rotate: rotate }

} ();

function showMsg() {

mRotate.rotate("demo", function msg(m) {

if (m > -90 && m < -30) {

m$("msg").innerHTML += "22222222";

}

else if (m > -150 && m < -90) {

m$("msg").innerHTML += "333333333";

}

else if (m > -210 && m < -150) {

m$("msg").innerHTML += "444444";

}

else if (m > -270 && m < -210) {

m$("msg").innerHTML += "5555555";

}

else if (m > -330 && m < -270) {

m$("msg").innerHTML += "6666666";

} else {

m$("msg").innerHTML += "111111111";

}

m$('restart').style.display = "block";

});

}

window.onload = function () {

m$('test').onclick = function () {

m$('test').style.display = "none";

showMsg();

}

m$('restart').onclick = function () {

m$('restart').style.display = "none";

if (isIE) {

m$("demo").style.top = "0px";

m$("demo").style.left = "0px";

} else if (m$("demo").style.MozTransform !== undefined) {

m$("demo").style.MozTransform = 'rotate(0deg)';

} else if (m$("demo").style.OTransform !== undefined) {

m$("demo").style.OTransform = 'rotate(0deg)';

} else if (m$("demo").style.webkitTransform !== undefined) {

m$("demo").style.webkitTransform = 'rotate(0deg)';

} else {

m$("demo").style.transform = 'rotate(0deg)';

}

m$('test').style.display = "block";

i = 0;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值