跑馬燈抽獎(jiǎng)動(dòng)畫(huà)

跑馬燈抽獎(jiǎng)動(dòng)畫(huà)代碼

工作中用到了跑道燈抽獎(jiǎng)動(dòng)畫(huà)齿穗,之前模仿的同事寫(xiě)的,總感覺(jué)不是很好喊括,昨天百度了下然后看到不錯(cuò)的胧瓜,自己試著寫(xiě)了下,最后兩圈減速的判斷條件寫(xiě)的不好郑什,我理想的應(yīng)該是府喳,快要接近中獎(jiǎng)位置的最后 8 個(gè)過(guò)渡動(dòng)畫(huà)是減速的,而現(xiàn)在是第 5 圈就開(kāi)始減速蘑拯,如果中獎(jiǎng)位置是 7 那就減速了整整 2 圈钝满,自我感覺(jué)不太好

html

<section>
    <ul class="lottery-box" id="lotteryUl">
        <li class="li li-0">
            <div class="up"><span class="yuan">¥</span>1</div>
            <div class="down">電影票紅包</div>
        </li>
        <li class="li li-1">
            <div class="up"><span class="yuan">¥</span>1000</div>
            <div class="down">觀影套餐</div>
        </li>
        <li class="li li-2">
            <div class="up"><span class="yuan">¥</span>5</div>
            <div class="down">景點(diǎn)紅包</div>
        </li>
        <li class="li li-7">
            <div class="up"><span class="yuan">¥</span>5</div>
            <div class="down">電影票紅包</div>
        </li>
        <li>
            <div class="start" id="startBtn">立即抽獎(jiǎng)</div>
        </li>
        <li class="li li-3">
            <div class="up"><span class="yuan">¥</span>10</div>
            <div class="down">電影票紅包</div>
        </li>
        <li class="li li-6">
            <div class="up"><span class="yuan">¥</span>40</div>
            <div class="down">觀影券</div>
        </li>
        <li class="li li-5">
            <div class="tongcheng"></div>
            <div class="down">同城公仔</div>
        </li>
        <li class="li li-4">
            <div class="up"><span class="yuan">¥</span>3</div>
            <div class="down">電影票紅包</div>
        </li>
    </ul>
</section>

css

section {
    background: url(http://img1.40017.cn/cn/s/2016/touch/zt/45587/img_3.jpg) top center no-repeat;
    background-size: contain;
    height: 5.76rem;
    position: relative;
}

.lottery-box {
    margin: auto;
    width: 5.65rem;
    padding-left: .2rem;
    height: 4.6rem;
    overflow: hidden;
    padding-top: .65rem;
}

.lottery-box li {
    background: url(http://img1.40017.cn/cn/s/2016/touch/zt/45587/lottery-bg.png) center no-repeat;
    background-size: contain;
    width: 1.67rem;
    height: 1.43rem;
    float: left;
    margin: 0 .2rem .12rem 0;
    position: relative;
}

.lottery-box li:nth-child(5) {
    background: url(http://img1.40017.cn/cn/s/2016/touch/zt/45587/btn-bg.png) center no-repeat;
    background-size: contain;
    font-size: .32rem;
    color: #222c45;
    font-weight: 600;
    line-height: 1.43rem;
    text-align: center;
    text-shadow: 0 1px 2px rgba(255, 255, 255, .1);
}

.lottery-box .on {
    background: url(http://img1.40017.cn/cn/s/2016/touch/zt/45587/lottery-on.png) center no-repeat;
    background-size: contain;
}

.lottery-box .up {
    padding: 0 .1rem;
    height: .55rem;
    background: #f2ede8;
    border-radius: .15rem;
    color: #8e7b67;
    font-size: .36rem;
    font-family: Arial;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .1);
    display: inline-block;
    font-weight: 600;
    position: absolute;
    top: .2rem;
    left: 50%;
    transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
}

.lottery-box .yuan {
    font-size: .2rem;
}

.lottery-box .down {
    color: #f7e0c3;
    font-size: .24rem;
    text-align: center;
    line-height: 1em;
    margin: .95rem 0 0 0;
}

.lottery-box .tongcheng {
    width: .91rem;
    height: .75rem;
    background: url(http://img1.40017.cn/cn/s/2016/touch/zt/45587/tongcheng.png) center no-repeat;
    background-size: contain;
    position: absolute;
    top: .2rem;
    left: 50%;
    transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
}

js

function Lottery() {
    this.timer = null; //定時(shí)器
    this.rotateIndex = 0; //旋轉(zhuǎn)初始位置
    this.speed = 200; //旋轉(zhuǎn)初始位置
    this.circle = 0; //已轉(zhuǎn)動(dòng)圈數(shù)
    this.minCircle = 5; //至少轉(zhuǎn)多少圈
    this.prize = 0; //中獎(jiǎng)索引
    this.count = $('#lotteryUl').find('.li').length; //獎(jiǎng)品數(shù)量
    this.backFn = function() {}; //動(dòng)畫(huà)結(jié)束執(zhí)行的函數(shù)
}

Lottery.prototype = {
    // 開(kāi)始
    start: function() {

        var that = this;
        timer = setTimeout(function() {
            that.start();
        }, this.speed);

        this.addCircle();
        this.setState();
        this.changeSpeed();
    },
    // 停止
    stop: function(argument) {
        if (this.circle > this.minCircle && this.prize == this.rotateIndex) {
            console.log(this.circle, this.rotateIndex)
            clearTimeout(timer);
            // 返回函數(shù)
            setTimeout(this.backFn, 300);
        }
    },
    // 動(dòng)畫(huà)-當(dāng)前位置添加class
    setState: function() {
        var beforeIndex = this.rotateIndex === 0 ? this.count - 1 : this.rotateIndex - 1;
        $('#lotteryUl').find('.li-' + beforeIndex).removeClass('on');
        $('#lotteryUl').find('.li-' + this.rotateIndex).addClass('on');

        this.stop();

        this.rotateIndex = this.rotateIndex + 1;
        if (this.rotateIndex == this.count) {
            this.rotateIndex = 0;
        }
    },
    // 改變速度-第一圈加速,最后2圈減速
    changeSpeed: function() {
        // 加速
        if (this.circle < 2) {
            this.speed -= 15;
        }
        // 減速
        if (this.circle > this.minCircle - 1) {
            this.speed += 30;
        }
    },
    // 轉(zhuǎn)動(dòng)圈數(shù)
    addCircle: function(argument) {
        if (this.rotateIndex == 0) {
            this.circle = this.circle + 1;
        }
    }
}

// 點(diǎn)擊事件-開(kāi)始按鈕
$('#startBtn').on('click', function() {
    var ul = $('#lotteryUl').find('li');
    ul.removeClass('stop');
    ul.removeClass('on');

    var lotteryFn = new Lottery();
    lotteryFn.start();
    lotteryFn.prize = 3;
    lotteryFn.backFn = function() {
        alert('中獎(jiǎng)了申窘!')
    };
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弯蚜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子剃法,更是在濱河造成了極大的恐慌碎捺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷洲,死亡現(xiàn)場(chǎng)離奇詭異收厨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)恩脂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)帽氓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人俩块,你說(shuō)我怎么就攤上這事黎休。” “怎么了玉凯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵势腮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我漫仆,道長(zhǎng)捎拯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任盲厌,我火速辦了婚禮署照,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗浩。我一直安慰自己建芙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布懂扼。 她就那樣靜靜地躺著禁荸,像睡著了一般右蒲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赶熟,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天瑰妄,我揣著相機(jī)與錄音,去河邊找鬼映砖。 笑死间坐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啊央。 我是一名探鬼主播眶诈,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓜饥!你這毒婦竟也來(lái)了逝撬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乓土,失蹤者是張志新(化名)和其女友劉穎宪潮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體趣苏,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狡相,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了食磕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尽棕。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖彬伦,靈堂內(nèi)的尸體忽然破棺而出滔悉,到底是詐尸還是另有隱情,我是刑警寧澤单绑,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布回官,位于F島的核電站,受9級(jí)特大地震影響搂橙,放射性物質(zhì)發(fā)生泄漏歉提。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一区转、第九天 我趴在偏房一處隱蔽的房頂上張望苔巨。 院中可真熱鬧,春花似錦废离、人聲如沸侄泽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔬顾。三九已至,卻和暖如春湘捎,著一層夾襖步出監(jiān)牢的瞬間诀豁,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工窥妇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舷胜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓活翩,卻偏偏與公主長(zhǎng)得像烹骨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子材泄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容