抽獎轉(zhuǎn)盤實現(xiàn) ( vue + js + html + less )

書寫文章起因

活動策劃人員策劃這個抽獎頁面,用于app內(nèi)栈拖。
當時连舍,這個轉(zhuǎn)盤布局我踩坑了,我本以為這么簡單的布局應該不用絕對定位的涩哟,是我想多了索赏!然后改為絕對定位來實現(xiàn),因為要簡單些贴彼。

抽獎轉(zhuǎn)盤
一潜腻、九個格子和開始按鈕,頁面布局的實現(xiàn)思路

這個用絕對定位锻弓,小格子相對于大轉(zhuǎn)盤定位砾赔,這個我就給個簡單例子就好了哈,我相信你們能懂起的,如果沒理解到我再詳說暴心。


標注

如上圖所示妓盲,大框為父容器,九個小格子為子容器

<div class="parent">
    <div class="child child1"></div> 
    <div class="child child2"></div> 
    <div class="child child3"></div> 
    .......
    <div class="child child9" id="start"></div> 
</div>

<style>
    .parent{
        position: relative;

        .child{
             position: absolute;
        }
        .child1{
            top: 0;
            left: 0;
        }
        ......
       .active{
            background-color: darkgoldenrod;
       }
    }
</style>
二专普、轉(zhuǎn)動效果實現(xiàn):(下面貼出vue文件的html和js代碼悯衬,css代碼沒有。因為全貼出來太多了檀夹,如果想看詳細代碼筋粗,就到我的github倉庫去觀看或者下載)
轉(zhuǎn)動前.png

轉(zhuǎn)動后.png

app.vue

// template
<template>
    <div id="rotary-table">
        <div class="award" v-for="(award,index) in awards" :class="['award'+index,{'active': index==current}]">
            {{award.name}}
        </div>
        <div id="start-btn" @click="start">開始</div>
    </div>
</template>
// js
export default {
    name: 'get-award',
    data() {
        return {
            current: 0,  
            awards: [  // 獎品數(shù)組
                { id: 1, name: '空' },
                { id: 2, name: '眼鏡' },
                { id: 3, name: '包' },
                { id: 4, name: '笨驢' },
                { id: 5, name: '書' },
                { id: 6, name: '手鏈' },
                { id: 7, name: '美女' },
                { id: 8, name: 'iphone' }
            ],
            speed: 200,   // 速度
            diff: 15,   // 速度增加的值
            award: {},   // 抽中的獎品
            time: 0   // 記錄開始抽獎時的時間
        };
    },
    methods: {
        start(){
            // 開始抽獎
            this.drawAward();
            this.time = Date.now();
            this.speed = 200;
            this.diff = 15;
        },
        drawAward(){
            // 請求接口, 這里我就模擬請求后的數(shù)據(jù)(請求時間為2s)
            setTimeout( () => {
                this.award = {
                    id: '4',
                    name: '笨驢',
                };
            }, 2000 );
            this.move();
        },
        move(){
            window.timeout = setTimeout( () => {
                this.current++;
                if ( this.current > 7 ) {
                    this.current = 0;
                }

                // 若抽中的獎品id存在,則開始減速轉(zhuǎn)動
                if ( this.award.id && ( Date.now() - this.time ) / 1000 > 2 ) {
                    this.speed += this.diff;   // 轉(zhuǎn)動減速

                    // 若轉(zhuǎn)動時間超過4秒炸渡,并且獎品id等于小格子的獎品id桨昙,則停下來!
                    if ( ( Date.now() - this.time ) / 1000 > 4 && this.award.id == this.awards[ this.current ].id ) {
                        clearTimeout( window.timeout );
                        setTimeout( () => {
                            alert( this.award.name );
                        }, 0 );
                        return;
                    }

                // 若抽中的獎品不存在桃焕,則加速轉(zhuǎn)動
                } else {
                    this.speed -= this.diff;   // 轉(zhuǎn)動加速
                }

                this.move();
            }, this.speed );
        }
    }
};

結(jié)尾發(fā)言

如果沒有理解到契沫,可以留言問我哈。這是我專門寫的小demo吼畏,希望能幫到大家督赤。謝謝!
代碼倉庫地址:https://github.com/lingziyb/get-award

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泻蚊,一起剝皮案震驚了整個濱河市躲舌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌性雄,老刑警劉巖没卸,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秒旋,居然都是意外死亡办悟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門滩褥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來病蛉,“玉大人,你說我怎么就攤上這事瑰煎∑倘唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵酒甸,是天一觀的道長魄健。 經(jīng)常有香客問我,道長插勤,這世上最難降的妖魔是什么沽瘦? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任革骨,我火速辦了婚禮,結(jié)果婚禮上析恋,老公的妹妹穿的比我還像新娘良哲。我一直安慰自己,他們只是感情好助隧,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布筑凫。 她就那樣靜靜地躺著,像睡著了一般并村。 火紅的嫁衣襯著肌膚如雪巍实。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天哩牍,我揣著相機與錄音棚潦,去河邊找鬼。 笑死膝昆,一個胖子當著我的面吹牛瓦盛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播外潜,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挠唆!你這毒婦竟也來了处窥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤玄组,失蹤者是張志新(化名)和其女友劉穎滔驾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俄讹,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡哆致,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了患膛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摊阀。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖踪蹬,靈堂內(nèi)的尸體忽然破棺而出胞此,到底是詐尸還是另有隱情,我是刑警寧澤跃捣,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布漱牵,位于F島的核電站,受9級特大地震影響疚漆,放射性物質(zhì)發(fā)生泄漏酣胀。R本人自食惡果不足惜刁赦,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闻镶。 院中可真熱鬧甚脉,春花似錦、人聲如沸儒溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顿涣。三九已至波闹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涛碑,已是汗流浹背精堕。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒲障,地道東北人歹篓。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像揉阎,于是被迫代替她去往敵國和親庄撮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,756評論 25 707
  • 今天見了一個朋友毙籽,目前在經(jīng)營一家羽毛球館洞斯,在這個行業(yè)深耕了10多年。 他不僅一次地跟我抱怨過“累坑赡,難烙如,煩”,也說過...
    恩煦閱讀 232評論 2 1
  • 有些人毅否,可能此生不會再見了亚铁,只是生命中的過客,曾經(jīng)加過的微信螟加,一年也只會發(fā)一句問候徘溢,只在朋友圈里點贊他的生活
    二兩炸閱讀 141評論 0 0
  • 之前我們說過甸昏,AP歷史論文里的Document based question (DBQ) 滿分7分,其中有1分是給...
    TopScholar閱讀 529評論 0 0