Table of Contents
1. Analysis of the entire lottery process:
2. What needs to be done for the circular lottery wheel component
3. Page preview
4. Basic usage
5. Attribute description of roundTurntable component
6. Event description of the roundTurntable component
Home Web Front-end Vue.js Can vuejs make a turntable?

Can vuejs make a turntable?

Sep 21, 2021 pm 03:42 PM
vuejs

vuejs can make a turntable, and the implementation method is: 1. Create a lottery button; 2. Get the position where the turntable should stop; 3. Interact with the background; 4. Stop at the place set in step 2 after the animation ends; 5. Set the prompt to unlock the prize winning function.

Can vuejs make a turntable?

The operating environment of this article: Windows 7 system, Vue version 2.9.6, Dell G3 computer.

Can vuejs make turntables?

Configurable circular lottery turntable component in Vue

1. Analysis of the entire lottery process:

  1. Clicked the pointer in the middle of the turntable (i.e. start lottery button), determine whether it can be rotated (the specific logic is encapsulated in canBeRotated()--① Whether the number of draws currently owned is greater than 0 ② Whether it is currently rotating (locked)), determine If passed, proceed to the next step, otherwise a corresponding prompt will pop up.
  2. Get the position where the turntable should stop and interact with the background, but this is only for demonstration purposes, and 0~5 is randomly selected locally.
  3. After successfully interacting with the background to obtain the stopping position, lock the turntable and reduce the number of draws.
  4. Tell the turntable component to start rotating and stop at the place set in step 2 after the animation ends.
  5. The turntable rotates and stops at the place set in step 3 before prompting for winning and unlocking.

2. What needs to be done for the circular lottery wheel component

  1. You can customize the background color and outer border color of each wheel. (turntableStyleOptionproperty)
  2. The size and position of the turntable. (When calling, add a class to the component, which is turntable in the code)
  3. Customize the number of turns the turntable needs to make when it is running. (rotateCircleproperty)
  4. You can customize the duration of the running animation. (duringTime attribute)
  5. Displays the position of each turntable by receiving the prize information (prizeData) passed by the parent component. (Calculate the angle to be rotated based on the center of the circle getRotateAngle() method)
  6. Method that starts rotating after being called by the parent component and stops at the specified position (rotate ), telling the parent component that it has stopped after ending the animation.
  7. The name and picture of the prize can be customized.

3. Page preview

Can vuejs make a turntable?

4. Basic usage

  1. Quote

1

import roundTurntable from './components/roundTurntable';

Copy after login
  1. Declaration

1

2

3

components: {

  roundTurntable

},

Copy after login
  1. Call

1

2

3

4

5

6

7

8

<round-turntable>

    <template>

      <p>{{ scope.item.prizeName }}</p>

      <p>

        <img  src="/static/imghw/default1.png" data-src="scope.item.prizeImg" class="lazy" alt="Can vuejs make a turntable?" >

      </p>

    </template>

</round-turntable>

Copy after login

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

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}`);

   },

},

Copy after login

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

.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%;

  }

}

Copy after login

5. Attribute description of roundTurntable component

Parameters Description Type Default value
ref To get the DOM node of this component and call the sub-component's start rotation animation method, use this.$refs[refName].rotate(index) string
prizeData Prize data displayed on the wheel array
rotateCircle The number of circles to be rotated number 6
duringTime The time required to rotate (unit is secondss) number 4.5
turntableStyleOption Turntable style options (background color, outer border color) object { prizeBgColors: ['#AE3EFF', '# 4D3FFF', '#FC262C', '#3A8BFF', '#EE7602', '#FE339F'], borderColor: '#199301' }
class Style used to define the position and size of the turntable string

6. Event description of the roundTurntable component

Event name Description Callback parameters
endRotation Event callback triggered after the turntable stops
##7. Complete project code

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

The prize images and pointer images used are from:

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

The above is the detailed content of Can vuejs make a turntable?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Some tips for developing Android applications using Vue.js and Kotlin language Some tips for developing Android applications using Vue.js and Kotlin language Jul 31, 2023 pm 02:17 PM

Some tips for developing Android applications using Vue.js and Kotlin language. With the popularity of mobile applications and the continuous growth of user needs, the development of Android applications has attracted more and more attention from developers. When developing Android apps, choosing the right technology stack is crucial. In recent years, Vue.js and Kotlin languages ​​have gradually become popular choices for Android application development. This article will introduce some techniques for developing Android applications using Vue.js and Kotlin language, and give corresponding code examples. 1. Set up the development environment at the beginning

Some tips for developing data visualization applications using Vue.js and Python Some tips for developing data visualization applications using Vue.js and Python Jul 31, 2023 pm 07:53 PM

Some tips for developing data visualization applications using Vue.js and Python Introduction: With the advent of the big data era, data visualization has become an important solution. In the development of data visualization applications, the combination of Vue.js and Python can provide flexibility and powerful functions. This article will share some tips for developing data visualization applications using Vue.js and Python, and attach corresponding code examples. 1. Introduction to Vue.js Vue.js is a lightweight JavaScript

Integration of Vue.js and Lua language, best practices and experience sharing in building front-end engines for game development Integration of Vue.js and Lua language, best practices and experience sharing in building front-end engines for game development Aug 01, 2023 pm 08:14 PM

The integration of Vue.js and Lua language, best practices and experience sharing for building a front-end engine for game development Introduction: With the continuous development of game development, the choice of game front-end engine has become an important decision. Among these choices, the Vue.js framework and Lua language have become the focus of many developers. As a popular front-end framework, Vue.js has a rich ecosystem and convenient development methods, while the Lua language is widely used in game development because of its lightweight and efficient performance. This article will explore how to

Integrating Vue.js with Objective-C, tips and advice for developing reliable Mac apps Integrating Vue.js with Objective-C, tips and advice for developing reliable Mac apps Jul 30, 2023 pm 03:01 PM

Integration of Vue.js and Objective-C language, tips and suggestions for developing reliable Mac applications. In recent years, with the popularity of Vue.js in front-end development and the stability of Objective-C in Mac application development, developers Start trying to combine the two to develop more reliable and efficient Mac applications. This article will introduce some tips and suggestions to help developers correctly integrate Vue.js and Objective-C and develop high-quality Mac applications. one

How to use Vue to implement QQ-like chat bubble effects How to use Vue to implement QQ-like chat bubble effects Sep 20, 2023 pm 02:27 PM

How to use Vue to implement QQ-like chat bubble effects In today’s social era, the chat function has become one of the core functions of mobile applications and web applications. One of the most common elements in the chat interface is the chat bubble, which can clearly distinguish the sender's and receiver's messages, effectively improving the readability of the message. This article will introduce how to use Vue to implement QQ-like chat bubble effects and provide specific code examples. First, we need to create a Vue component to represent the chat bubble. The component consists of two main parts

How to use PHP and Vue.js to implement data filtering and sorting functions on charts How to use PHP and Vue.js to implement data filtering and sorting functions on charts Aug 27, 2023 am 11:51 AM

How to use PHP and Vue.js to implement data filtering and sorting functions on charts. In web development, charts are a very common way of displaying data. Using PHP and Vue.js, you can easily implement data filtering and sorting functions on charts, allowing users to customize the viewing of data on charts, improving data visualization and user experience. First, we need to prepare a set of data for the chart to use. Suppose we have a data table that contains three columns: name, age, and grades. The data is as follows: Name, Age, Grades Zhang San 1890 Li

Develop efficient web crawlers and data scraping tools using Vue.js and Perl languages Develop efficient web crawlers and data scraping tools using Vue.js and Perl languages Jul 31, 2023 pm 06:43 PM

Use Vue.js and Perl languages ​​to develop efficient web crawlers and data scraping tools. In recent years, with the rapid development of the Internet and the increasing importance of data, the demand for web crawlers and data scraping tools has also increased. In this context, it is a good choice to combine Vue.js and Perl language to develop efficient web crawlers and data scraping tools. This article will introduce how to develop such a tool using Vue.js and Perl language, and attach corresponding code examples. 1. Introduction to Vue.js and Perl language

Integration of Vue.js and Dart language, practical and development skills for building cool mobile application UI interfaces Integration of Vue.js and Dart language, practical and development skills for building cool mobile application UI interfaces Aug 02, 2023 pm 03:33 PM

Integration of Vue.js and Dart language, practice and development skills for building cool mobile application UI interfaces Introduction: In mobile application development, the design and implementation of the user interface (UI) is a very important part. In order to achieve a cool mobile application interface, we can integrate Vue.js with the Dart language, and use the powerful data binding and componentization features of Vue.js and the rich mobile application development library of the Dart language to build Stunning mobile application UI interface. This article will show you how to

See all articles