您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關vuejs是否可以做轉盤,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
vuejs 可以做轉盤嗎?
Vue中可配置的圓形抽獎轉盤組件
點擊了轉盤正中間的指針(即開始抽獎按鈕),判斷是否可以轉動(具體邏輯封裝在canBeRotated()
里--①當前擁有的抽獎次數是否大于0②現在是否正在轉動著(被鎖著)),判斷通過則進行下一步, 否則彈出相應提示。
獲取轉盤應該停止的位置,應該與后臺交互,但這里僅作演示用途, 本地隨機抽取0~5。
與后臺交互成功獲取到該停止的位置后,鎖定轉盤且減少抽獎次數。
告訴轉盤組件,開始轉動了,并且動畫結束后停在步驟2設置的地方。
轉盤轉動,停在步驟3設置的地方后再提示中獎,解鎖。
可以自定義每一格轉盤的背景顏色,外邊框的顏色。(turntableStyleOption
屬性)
轉盤的大小與位置。(在調用時,給組件加個class,代碼里為turntable
)
自定義這個轉盤運轉起來要轉過的圈數。(rotateCircle
屬性)
可以自定義運轉動畫的時長。(duringTime
屬性)
通過接收到父組件傳遞過來的獎品信息(prizeData
),顯示在每一格轉盤的位置。(計算要根據圓心旋轉的角度getRotateAngle()
方法)
被父組件調用后就開始轉動,并在指定位置停下的方法(rotate
),結束動畫后告訴父組件已停下。
獎品的名稱和圖片可以自定義樣式。
引用
import roundTurntable from './components/roundTurntable';
聲明
components: { roundTurntable },
調用
<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%; } }
參數 | 說明 | 類型 | 默認值 |
---|---|---|---|
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 | — |
事件名稱 | 說明 | 回調參數 |
---|---|---|
endRotation | 轉盤停下來后觸發的事件回調 | — |
https://github.com/LiaPig/vue-round-turntable
關于vuejs是否可以做轉盤就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。