[jQuery编程挑战]002:实现一个转盘大抽奖

body {
    background-color: #F2F2F2;
    text-align: center;
}
.container {
    position: relative;
    width: 500px;
    height: 500px;
    margin: 0 auto;
}

.pic {
    position: absolute;
    width: 100px;
    height: 100px;
    border-radius: 50px;
    overflow: hidden;
    transition: width ease 2s, height ease 2s, border-radius ease 2s, left ease 2s, top ease 2s;
}

.pic.active {
    -webkit-box-shadow: 0 0 10px rgba(57, 203, 242, 1);
    box-shadow: 0 0 10px rgba(57, 203, 242, 1);
}

.pic.show {
    width: 200px;
    height: 200px;
    border-radius: 100px;
    z-index: 2;
}

/*.pic.show {
    -moz-animation: show 2s ease;
    -webkit-animation: show 2s;
    -o-animation: show 2s;
    animation: show 2s;
}*/

.pic img{
    width: 100px;
    height: 100px;
    transition: width ease 2s, height ease 2s;
}

.pic.show img {
    width: 200px;
    height: 200px;
}

.start {
    position: absolute;
    left: 225px;
    top: 225px;
    width: 50px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    background-color: #5cb85c;
    border-radius: 25px;
    cursor: pointer;
}

.shade {
    position: absolute;
    top: 0;
    left: 0;
    opacity: .6;
    width: 1500px;
    height: 1500px;
    background: #000;
    z-index: 1;
}
$(function() {
    initDial();
    initEvent();
})

var radius = 200,
    imgWidth = 100,
    imgHeight = 100;

/**
* 初始化转盘
*/
function initDial() {
    var $container = $(‘#container‘),
        origin = {};

    for (var i = 0; i < 8; i++) {
        var $pic, radian, x, y;
        $pic = $(‘<div class="pic"><img src="images/image‘ + i + ‘.jpg" /></div>‘);
        radian = 2 * Math.PI / 360 * 45 * i;
        x = 250 + Math.cos(radian) * radius - imgWidth / 2;
        y = 250 + Math.sin(radian) * radius - imgHeight / 2;

        $pic.css(‘left‘, x);
        $pic.css(‘top‘, y);
        //$pic.addClass(‘active‘);
        $container.append($pic);
    }

    var $startBtn = $(‘<div class="start">开始</div>‘);
    $container.append($startBtn);
}

/**
*初始化事件
*/
function initEvent() {
    var $start = $(‘.start‘);
    $start.on(‘click‘, function() {
        nextPic(Math.random() * 50);
    })
}

/**
*time: 调用nextPic的间隔时间,每个调用加上一点时间
*/
function nextPic(time) {
    var $activePic,//当前转到的图片
            picIndex;//activePic index

    //处理时间
    time = time + 5 * time / 30;

    $activePic = $(‘.pic.active‘);
    if ($activePic.length === 0) {
        picIndex = Math.round(Math.random() * 7);
        $activePic = $($(‘.pic‘).get(picIndex));
    } else {
        picIndex = $activePic.data(‘picIndex‘);
        picIndex = picIndex >= 7 ?0:picIndex+1;
        $activePic = $($(‘.pic‘).get(picIndex));
    }
    $(‘.pic‘).removeClass(‘active‘);
    $activePic.addClass(‘active‘);
    $activePic.data(‘picIndex‘, picIndex);

    if (time > 800) {
        show();
    } else {
        window.setTimeout(function() {
            nextPic(time);
        }, time);
    }
}

/**
*显示选中的图片
*/
function show() {
    var $activePic = $(‘.pic.active‘);
    if ($activePic.length === 0) {
        return;
    }
    $activePic.addClass(‘show‘);
    $activePic.css(‘left‘, ‘150px‘);
    $activePic.css(‘top‘, ‘150px‘);
    $(‘body‘).append(‘<div class="shade"></div>‘)
}
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="utf-8"/>
        <title>实现一个转盘大抽奖</title>
        <link rel="stylesheet" type="text/css" href="css/style.css">
        <script type="text/javascript" src="../js/jquery-1.11.0.js"></script>
        <script type="text/javascript" src="js/script.js"></script>
    </head>
    <body>
        <p>2015年了,还是单身吗?为程序员派送福利来了,随机抽取女友,现抽现带走!</p>
        <div class="container" id="container">
        </div>
    </body>
</html>
时间: 2024-11-08 19:08:18

[jQuery编程挑战]002:实现一个转盘大抽奖的相关文章

[jQuery编程挑战]003 克隆一个页面元素及其相关事件

挑战: a) 绑定一个点击方法到这个div,点击后此元素会淡出消失 b) 同时克隆一个新的div元素到页面,元素内容是前面div文字内容反向书写(即,sgatbg olleh),同样也具有上面的点击事件绑定,元素淡出消失 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>克隆一个页面元素及其相关元素</titl

[jQuery编程挑战]006 生成一个倒计时效果

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>生成一个倒计时效果</title> <style type="text/css"> body{ margin:0; padding:0; background: orange; width: 100%; height: 10

js转盘大抽奖 自定义概率

公司项目搞优惠活动,让做一个转盘抽奖的活动,转盘抽奖让他转起来 按照概率停止其实都麻烦,但是概率如果设置在前端就会很大的安全漏洞,所以无论为了安全性还是后期的维护问题都要把概率写到后台配置里然后读取配置.那么问题来了,我们需要把后台的概率结果和前端自己的转盘想对应,我的大致思路是这样的,后台返回概率结果之后,对应的可定有奖品,然后给每个奖品一个不变的标识,根据这个返回的标识我们前端进行相应的转盘指针停留的位置.我们后台鼻尖懒 他不想改接口了 就直接让我去对应配置里的奖品名字,好吧就这样算是搞完了

【FIR.im赞助】jQuery编程挑战#012:生成菜单添加和删除动画效果

申请达人,去除赞助商链接 定义如下HTML代码: <!-- HTML代码片段中请勿添加<body>标签 //--> <ul id="container"> <li>Java<i class="fa fa-times pull-right"></i></li> <li>Javascript<i class="fa fa-times pull-right&qu

[jQuery编程挑战]001:实现页面元素加速动画效果

要求: 页面包含两个HTML元素:一个按钮,一个小方块 动画要求:点击按钮,小方块从页面坐标300,300,加速移动到0,0 相关知识点: jQuery动画方法animate easing参数的设置 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"> <title>实现页面元素加速动画效果</title> <styl

[jQuery编程挑战]008 生成逗号分隔数字

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title></title> <script type="text/javascript" src="../js/jquery-1.11.0.js"></script> <script type=&

[jQuery编程挑战]005 使用最短的代码生成元素的闪烁效果

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>使用最短的代码生成元素的闪烁效果</title> <style type="text/css"> .blink{ width: 150px; height: 150px; -webkit-border-radius: 50%

[jQuery编程挑战]004 针对选择框词典式排序

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>针对选择框词典式排序</title> <script type="text/javascript" src="../js/jquery-1.11.0.js"></script> <scr

[jQuery编程挑战]007 切换数据表格的行列

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>007 切换数据表格的行列</title> <style type="text/css"> table{ border: 1px solid #ccc; font-size: 14px; } table th, .heade