vuejs peut créer un plateau tournant, et la méthode de mise en œuvre est la suivante : 1. Créez un bouton de loterie ; 2. Obtenez la position où le plateau tournant doit s'arrêter ; 3. Interagissez avec l'arrière-plan 4. Arrêtez-vous à l'endroit défini à l'étape 2 ; l'animation se termine ; 5. Définir des invites. Gagner des prix débloque des fonctionnalités.
L'environnement d'exploitation de cet article : système Windows 7, Vue version 2.9.6, ordinateur Dell G3.
Les vuejs peuvent-ils fabriquer des platines ?
Composant de carrousel de loterie circulaire configurable dans Vue
canBeRotated()
- ① Si le nombre actuel de tirages est supérieur à 0 ② S'il est actuellement en rotation (verrouillé)), s'il est réussi, passez à l'étape suivante, sinon une invite correspondante apparaîtra. canBeRotated()
里--①当前拥有的抽奖次数是否大于0②现在是否正在转动着(被锁着)),判断通过则进行下一步, 否则弹出相应提示。turntableStyleOption
属性)turntable
)rotateCircle
属性)duringTime
属性)prizeData
),显示在每一格转盘的位置。(计算要根据圆心旋转的角度getRotateAngle()
方法)rotate
),结束动画后告诉父组件已停下。import roundTurntable from './components/roundTurntable';
components: { roundTurntable },
<round-turntable> <template> <p>{{ scope.item.prizeName }}</p> <p> <img alt="Vuejs peut-il créer une platine vinyle ?" > </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' } Obtenez la position où le plateau tournant doit s'arrêter et il doit interagir avec l'arrière-plan, mais ce n'est qu'à des fins de démonstration, et 0 ~ 5 est sélectionné au hasard localement. | Après avoir interagi avec succès avec l'arrière-plan pour obtenir la position d'arrêt, verrouillez le plateau tournant et réduisez le nombre de tirages.
2. Que faut-il faire pour le composant de la roue de loterie circulaire | Vous pouvez personnaliser la couleur d'arrière-plan et la couleur de la bordure extérieure de chaque roue. ( | La taille et la position du plateau tournant. (Lors de l'appel, ajoutez une classe au composant, qui est plateau dans le code) | Personnalisez le nombre de tours que le plateau tournant doit effectuer lorsqu'il fonctionne. (attribut Vous pouvez personnaliser la durée de l'animation en cours d'exécution. (attribut duringTime ) | En recevant les informations sur le prix (
Citationrrreee | Déclaration li> li>rrreeeAppelrrreeerrreeerrreee | 5. Description de l'attribut du composant roundTurntable|
---|---|---|
Description | Type | Valeur par défaut |
this.$refs[refName].rotate(index)
string—🎜🎜🎜🎜prizeData🎜🎜Données de prix affichées sur la roue🎜🎜array🎜🎜—🎜🎜🎜🎜rotateCircle🎜🎜Le nombre de tours dont la roue doit tourner🎜🎜number🎜 🎜
6
🎜 🎜🎜🎜duringTime🎜🎜La durée de rotation (en secondes s
) 🎜🎜number🎜🎜4.5
🎜🎜🎜🎜turntableStyleOption🎜🎜Option de style pour le plateau tournant (couleur de fond, couleur de la bordure extérieure)🎜🎜object🎜🎜{ prizeBgColors : ['#AE3EFF', '#4D3FFF', '#FC262C', '#3A8BFF', '#EE7602', '#FE339F '], borderColor ) Nom🎜🎜Description🎜🎜Paramètres de rappel🎜🎜🎜🎜🎜🎜endRotation🎜🎜Rappel d'événement déclenché après l'arrêt de la platine🎜🎜—🎜🎜🎜🎜🎜 7. Code complet du projet🎜🎜https://git moyeu. com/LiaPig/ Les images de prix et les images de pointeurs utilisées par vue-round-turntable🎜🎜 proviennent de : 🎜🎜http://sc.chinaz.com/jiaobendemo.aspx?downloadid=12018113053246🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!