站長資訊網
        最全最豐富的資訊網站

        vuejs 可以做轉盤嗎

        vuejs可以做轉盤,其實現方法:1、創建抽獎按鈕;2、獲取轉盤應該停止的位置;3、與后臺交互;4、在動畫結束后停在步驟2設置的地方;5、設置提示中獎解鎖功能。

        vuejs 可以做轉盤嗎

        本文操作環境:windows7系統、Vue2.9.6版、Dell G3電腦。

        vuejs 可以做轉盤嗎?

        Vue中可配置的圓形抽獎轉盤組件

        一、整個抽獎流程的思路分析:

        1. 點擊了轉盤正中間的指針(即開始抽獎按鈕),判斷是否可以轉動(具體邏輯封裝在canBeRotated()里–①當前擁有的抽獎次數是否大于0②現在是否正在轉動著(被鎖著)),判斷通過則進行下一步, 否則彈出相應提示。
        2. 獲取轉盤應該停止的位置,應該與后臺交互,但這里僅作演示用途, 本地隨機抽取0~5。
        3. 與后臺交互成功獲取到該停止的位置后,鎖定轉盤且減少抽獎次數。
        4. 告訴轉盤組件,開始轉動了,并且動畫結束后停在步驟2設置的地方。
        5. 轉盤轉動,停在步驟3設置的地方后再提示中獎,解鎖。

        二、圓形抽獎轉盤組件需要做的事情

        1. 可以自定義每一格轉盤的背景顏色,外邊框的顏色。(turntableStyleOption屬性)
        2. 轉盤的大小與位置。(在調用時,給組件加個class,代碼里為turntable
        3. 自定義這個轉盤運轉起來要轉過的圈數。(rotateCircle屬性)
        4. 可以自定義運轉動畫的時長。(duringTime屬性)
        5. 通過接收到父組件傳遞過來的獎品信息(prizeData),顯示在每一格轉盤的位置。(計算要根據圓心旋轉的角度getRotateAngle()方法)
        6. 被父組件調用后就開始轉動,并在指定位置停下的方法(rotate),結束動畫后告訴父組件已停下。
        7. 獎品的名稱和圖片可以自定義樣式。

        三、頁面預覽

        vuejs 可以做轉盤嗎

        四、基礎用法

        1. 引用
        import roundTurntable from './components/roundTurntable';
        1. 聲明
        components: {   roundTurntable },
        1. 調用
        <round-turntable   ref="roundTurntable"   :prizeData="prizeData"   :rotateCircle="rotateCircle"   :duringTime="duringTime"   :turntableStyleOption="turntableStyleOption"   @endRotation="endRotation"   class="turntable">     <template slot="item" slot-scope="scope">       <p class="turntable-name">{{ scope.item.prizeName }}</p>       <p class="turntable-img">         <img :src="scope.item.prizeImg">       </p>     </template> </round-turntable>
        data() {   return {     // 轉盤上的獎品數據     prizeData: [    {      id: 1,      prizeName: '2000元京東券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/1.png',    },    {      id: 2,      prizeName: '300元京東券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/7.png',    },    {      id: 3,      prizeName: '50個比特幣',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/3.png',    },    {      id: 4,      prizeName: '50元話費券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/4.png',    },    {      id: 5,      prizeName: '100元話費券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/5.png',    },    {      id: 6,      prizeName: '100個比特幣',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/6.png',    }   ],   // 轉動的圈數   rotateCircle: 6,   // 轉動需要持續的時間(s)   duringTime: 4.5,   // 轉盤樣式的選項   turntableStyleOption: {     // 背景色     prizeBgColors: ['#AE3EFF', '#4D3FFF', '#FC262C', '#3A8BFF', '#EE7602', '#FE339F'],     // 轉盤的外邊框顏色     borderColor: '#199301',   },  } }, methods: {   // 已經轉動完轉盤觸發的函數    endRotation() {       // 提示中獎       alert(`恭喜您獲獎啦,您的獎品是:${this.prizeData[this.prizeIndex].prizeName}`);    }, },
        .turntable {   position: absolute;   left: calc(50% - 200px);   top: calc(50% - 200px);   width: 400px;   height: 400px; } .turntable-name {   /*background: pink;*/   position: absolute;   left: 10px;   top: 20px;   width: calc(100% - 20px);   font-size: 26px;   text-align: center;   color: #fff; }   .turntable-img {   position: absolute;   /*要居中就要50% - 寬度 / 2*/   left: calc(50% - 80px / 2);   top: 60px;   width: 80px;   height: 80px;   img {     display: inline-block;     width: 100%;     height: 100%;   } }

        五、roundTurntable組件的屬性說明

        參數 說明 類型 默認值
        ref 獲取這組件的dom節點,調用子組件的開始轉動動畫方法要用到this.$refs[refName].rotate(index) string
        prizeData 顯示在轉盤上的獎品數據 array
        rotateCircle 轉盤要轉過的圈數 number 6
        duringTime 轉動需要持續的時間(單位為秒s number 4.5
        turntableStyleOption 轉盤的樣式選項(背景色、外邊框顏色) object { prizeBgColors: ['#AE3EFF', '#4D3FFF', '#FC262C', '#3A8BFF', '#EE7602', '#FE339F'], borderColor: '#199301' }
        class 用來定義轉盤位置和大小的樣式 string

        六、roundTurntable組件的事件說明

        事件名稱 說明 回調參數
        endRotation 轉盤停下來后觸發的事件回調

        七、完整項目代碼

        https://github.com/LiaPig/vue-round-turntable

        使用到的獎品圖片和指針圖片均來自:

        http://sc.chinaz.com/jiaobendemo.aspx?downloadid=12018113053246

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久99国产精品成人欧美| 亚洲综合av永久无码精品一区二区 | 2048亚洲精品国产| 日韩精品人成在线播放| 91精品国产福利在线观看| 国产乱码精品一区二区三区中文| 日韩精品欧美国产在线| 国产精品伊人久久伊人电影 | 亚洲精品无码日韩国产不卡?V| 国产精品久久久天天影视香蕉| 国产精品久久久久久搜索| 国内少妇偷人精品视频免费| 亚洲国产精品一区二区成人片国内 | 国产精品一在线观看| 午夜不卡久久精品无码免费| 日韩精品一区二三区中文| 国产精品一级毛片无码视频| 97久视频精品视频在线老司机| 国产午夜精品一区理论片| 92国产精品午夜福利| 国产精品三级在线观看无码| 久久精品www人人爽人人| 亚洲精品国产美女久久久| 亚洲精品偷拍视频免费观看 | 久久久久久亚洲精品无码| 国产精品亚洲美女久久久| 国产乱人伦偷精品视频| 国产精品成人观看视频| 91精品国产自产在线观看| 亚洲精品成人av在线| 亚洲国语精品自产拍在线观看| 日韩精品久久久久久| 99久久99久久精品国产片果冻| 亚洲愉拍自拍欧美精品 | 国产精品一二三区| 国产精品影音先锋| 久久精品www| 国产高清在线精品一区二区| 337P亚洲精品色噜噜| 国产精品国产三级国产AⅤ| 国产亚洲精品高清在线|