Maison interface Web Voir.js Comment créer des applications sympas d'horloge et de compte à rebours à l'aide de Vue et Canvas

Comment créer des applications sympas d'horloge et de compte à rebours à l'aide de Vue et Canvas

Jul 17, 2023 am 09:48 AM
vue canvas 时钟 倒计时 炫酷

Comment utiliser Vue et Canvas pour créer des applications sympas d'horloge et de compte à rebours

Introduction :
Dans le développement Web moderne, avec la popularité du framework Vue et l'application généralisée de la technologie Canvas, nous pouvons créer une variété d'applications en combinant Vue et Effets d'animation à couper le souffle. Cet article se concentrera sur la façon d'utiliser Vue et Canvas pour créer des applications sympas d'horloge et de compte à rebours, et fournira des exemples de code correspondants que les lecteurs pourront suivre et apprendre.

1. Application Clock

  1. Créer une instance Vue et un élément Canvas
    Tout d'abord, nous devons créer une instance Vue et un élément Canvas. Dans les données de Vue, nous allons créer une variable currentTime représentant l'heure actuelle, et utiliser la fonction hook montée pour obtenir l'heure actuelle après le chargement de la page, et l'attribuer à currentTime . Dans le modèle HTML, nous insérerons l'élément Canvas dans la page.
<template>
  <div>
    <canvas id="clockCanvas"></canvas>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentTime: null
    };
  },
  mounted() {
    this.currentTime = new Date();
    this.drawClock();
  },
  methods: {
    drawClock() {
      // 在这里实现绘制时钟的逻辑
    }
  }
};
</script>
Copier après la connexion
    currentTime,并通过mounted钩子函数,在页面加载完成后获取当前时间,并赋值给currentTime。在HTML模板中,我们将把Canvas元素插入到页面中。
const canvas = document.getElementById('clockCanvas');
const ctx = canvas.getContext('2d');
const width = canvas.width;
const height = canvas.height;
Copier après la connexion
  1. 绘制时钟
    drawClock方法中,我们将使用Canvas API来绘制时钟的各个部分。首先,我们需要获取Canvas对象,并设置其宽度和高度,以及绘制环境。
const hour = this.currentTime.getHours();
const minute = this.currentTime.getMinutes();
const second = this.currentTime.getSeconds();

const hourAngle = ((hour % 12) + minute / 60 + second / 3600) * 30 * Math.PI / 180;
const minuteAngle = (minute + second / 60) * 6 * Math.PI / 180;
const secondAngle = second * 6 * Math.PI / 180;
Copier après la connexion

接下来,我们将设置绘制时钟的样式,例如指针的颜色、粗细、字体和颜色等。然后,我们需要计算出时、分、秒的角度,以便准确地绘制指针。

// 绘制时钟的外圆
ctx.beginPath();
ctx.arc(width / 2, height / 2, width / 2 - 10, 0, 2 * Math.PI);
ctx.lineWidth = 10;
ctx.strokeStyle = 'black';
ctx.stroke();

// 绘制时钟的时针
ctx.beginPath();
ctx.moveTo(width / 2, height / 2);
ctx.lineTo(width / 2 + Math.sin(hourAngle) * (width / 2 - 50), height / 2 - Math.cos(hourAngle) * (width / 2 - 50));
ctx.lineWidth = 6;
ctx.strokeStyle = 'black';
ctx.stroke();

// 绘制时钟的分针
ctx.beginPath();
ctx.moveTo(width / 2, height / 2);
ctx.lineTo(width / 2 + Math.sin(minuteAngle) * (width / 2 - 30), height / 2 - Math.cos(minuteAngle) * (width / 2 - 30));
ctx.lineWidth = 4;
ctx.strokeStyle = 'black';
ctx.stroke();

// 绘制时钟的秒针
ctx.beginPath();
ctx.moveTo(width / 2, height / 2);
ctx.lineTo(width / 2 + Math.sin(secondAngle) * (width / 2 - 20), height / 2 - Math.cos(secondAngle) * (width / 2 - 20));
ctx.lineWidth = 2;
ctx.strokeStyle = 'red';
ctx.stroke();
Copier après la connexion

接着,我们将使用Canvas的绘制方法来绘制时钟的各个部分。例如,我们可以用ctx.arc()方法绘制时钟的外圆,用ctx.moveTo()ctx.lineTo()方法绘制指针。在绘制完毕后,我们需要调用ctx.stroke()方法来描边。

requestAnimationFrame(this.drawClock);
Copier après la connexion

最后,我们需要使用requestAnimationFrame()方法来实现时钟的实时更新效果。

<template>
  <div>
    <canvas id="countdownCanvas"></canvas>
  </div>
</template>

<script>
export default {
  data() {
    return {
      remainingTime: null
    };
  },
  mounted() {
    const endTime = new Date();
    endTime.setDate(endTime.getDate() + 7);
    this.startCountdown(endTime);
    this.drawCountdown();
  },
  methods: {
    startCountdown(endTime) {
      // 在这里实现倒计时的逻辑
    },
    drawCountdown() {
      // 在这里实现绘制倒计时的逻辑
    }
  }
};
</script>
Copier après la connexion

至此,我们已经完成了时钟应用的创建和绘制逻辑。

二、倒计时应用

  1. 创建Vue实例和Canvas元素
    与时钟应用类似,我们也需要创建一个Vue实例和一个Canvas元素。在Vue的data中,我们将创建一个用于表示倒计时剩余时间的变量remainingTime,并通过mounted钩子函数,设置倒计时的结束时间为7天后,并启动倒计时的逻辑。
const now = new Date();
const remainingTime = Math.floor((endTime - now) / 1000);
this.remainingTime = remainingTime;
Copier après la connexion
  1. 倒计时逻辑
    startCountdown方法中,我们需要计算出倒计时的剩余时间,并将其保存在remainingTime变量中。
this.timer = setInterval(() => {
  if (this.remainingTime > 0) {
    this.remainingTime--;
  } else {
    clearInterval(this.timer);
  }
}, 1000);
Copier après la connexion

为了实现倒计时的效果,我们可以使用setInterval()方法来定时更新剩余时间,并在剩余时间为零时清除定时器。

const canvas = document.getElementById('countdownCanvas');
const ctx = canvas.getContext('2d');
const width = canvas.width;
const height = canvas.height;
Copier après la connexion
  1. 绘制倒计时
    drawCountdown方法中,我们将使用Canvas API来绘制倒计时的效果。首先,我们需要获取Canvas对象,并设置其宽度和高度,以及绘制环境。
ctx.font = '30px Arial';
ctx.fillStyle = 'black';
ctx.textAlign = 'center';
ctx.fillText(this.remainingTime, width / 2, height / 2);
Copier après la connexion

接下来,我们将设置绘制倒计时的样式,例如字体的大小、颜色和对齐方式等。然后,我们可以使用ctx.fillText()方法来绘制剩余时间。

requestAnimationFrame(this.drawCountdown);
Copier après la connexion

最后,我们需要使用requestAnimationFrame()Dessiner l'horloge

Dans la méthode drawClock, nous utiliserons l'API Canvas pour dessiner différentes parties de l'horloge. Tout d’abord, nous devons récupérer l’objet Canvas et définir sa largeur et sa hauteur, ainsi que l’environnement de dessin. rrreee

Ensuite, nous définirons le style de dessin de l'horloge, comme la couleur, l'épaisseur, la police et la couleur des aiguilles, etc. Nous devons ensuite déterminer les angles des heures, des minutes et des secondes afin de dessiner les aiguilles avec précision.

rrreee

Ensuite, nous utiliserons la méthode de dessin de Canvas pour dessiner différentes parties de l'horloge. Par exemple, nous pouvons utiliser la méthode ctx.arc() pour dessiner le cercle extérieur de l'horloge, et utiliser ctx.moveTo() et ctx.lineTo () La méthode dessine le pointeur. Après le dessin, nous devons appeler la méthode ctx.stroke() pour tracer.
rrreee

Enfin, nous devons utiliser la méthode requestAnimationFrame() pour obtenir l'effet de mise à jour en temps réel de l'horloge. 🎜rrreee🎜À ce stade, nous avons terminé la création et le dessin de la logique de l'application horloge. 🎜🎜2. Application de compte à rebours🎜🎜🎜Créer une instance Vue et un élément Canvas🎜Semblable à l'application d'horloge, nous devons également créer une instance Vue et un élément Canvas. Dans les données de Vue, nous allons créer une variable remainingTime pour représenter le temps restant du compte à rebours, et via la fonction hook montée, définir l'heure de fin du compte à rebours à 7 jours plus tard et démarrer la logique du compte à rebours. . rrreee
    🎜Logique du compte à rebours🎜Dans la méthode startCountdown, nous devons calculer le temps restant du compte à rebours et l'enregistrer dans dans la variable RestingTime.
rrreee🎜Afin d'obtenir l'effet de compte à rebours, nous pouvons utiliser la méthode setInterval() pour mettre à jour régulièrement le temps restant et effacer la minuterie lorsque le temps restant est nul. 🎜rrreee
    🎜Draw countdown🎜Dans la méthode drawCountdown, nous utiliserons l'API Canvas pour dessiner l'effet du compte à rebours. Tout d’abord, nous devons récupérer l’objet Canvas et définir sa largeur et sa hauteur, ainsi que l’environnement de dessin.
rrreee🎜Ensuite, nous définirons le style de dessin du compte à rebours, comme la taille, la couleur et l'alignement de la police, etc. Nous pouvons ensuite utiliser la méthode ctx.fillText() pour tracer le temps restant. 🎜rrreee🎜Enfin, nous devons utiliser la méthode requestAnimationFrame() pour obtenir l'effet de mise à jour en temps réel du compte à rebours. 🎜rrreee🎜À ce stade, nous avons terminé la création et la logique de dessin de l'application de compte à rebours. 🎜🎜Conclusion : 🎜Grâce à l'introduction de cet article, nous avons appris à utiliser Vue et Canvas pour créer des applications sympas d'horloge et de compte à rebours. En utilisant la méthode de dessin de Canvas et les capacités basées sur les données de Vue, nous pouvons facilement obtenir divers effets d'animation. J'espère que cet article sera utile aux lecteurs dans la pratique et inspirera leur créativité et leur imagination dans le développement front-end. 🎜

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vue3 Syntaxe non définie Sugar: comment lier dynamiquement les accessoires à l'aide de balises V dans les balises de style? Vue3 Syntaxe non définie Sugar: comment lier dynamiquement les accessoires à l'aide de balises V dans les balises de style? Apr 05, 2025 pm 06:12 PM

Utilisation de CSS dans le sucre de syntaxe Vue3 non définie ...

Comment compatible avec l'omission de débordement multi-lignes sur le terminal mobile? Comment compatible avec l'omission de débordement multi-lignes sur le terminal mobile? Apr 05, 2025 pm 10:36 PM

Problèmes de compatibilité du débordement multi-rangs sur le terminal mobile omis sur différents appareils Lors du développement d'applications mobiles à l'aide de Vue 2.0, vous rencontrez souvent la nécessité de déborder de texte ...

Comment introduire correctement le fichier index.css de l'interface utilisateur des éléments et éviter les échecs de chargement de style? Comment introduire correctement le fichier index.css de l'interface utilisateur des éléments et éviter les échecs de chargement de style? Apr 05, 2025 pm 02:33 PM

Les meilleures pratiques concernant l'introduction des fichiers de style Electui que de nombreux développeurs utilisent élément ...

Pourquoi avez-vous besoin d'appeler Vue.User (VUerouter) dans le fichier index.js dans le dossier du routeur? Pourquoi avez-vous besoin d'appeler Vue.User (VUerouter) dans le fichier index.js dans le dossier du routeur? Apr 05, 2025 pm 01:03 PM

La nécessité d'enregistrer VUerouter dans le fichier index.js dans le dossier du routeur Lors du développement d'applications VUE, vous rencontrez souvent des problèmes de configuration de routage. Spécial...

La production de pages H5 est-elle un développement frontal? La production de pages H5 est-elle un développement frontal? Apr 05, 2025 pm 11:42 PM

Oui, la production de pages H5 est une méthode de mise en œuvre importante pour le développement frontal, impliquant des technologies de base telles que HTML, CSS et JavaScript. Les développeurs construisent des pages H5 dynamiques et puissantes en combinant intelligemment ces technologies, telles que l'utilisation du & lt; Canvas & gt; Tag pour dessiner des graphiques ou utiliser JavaScript pour contrôler le comportement d'interaction.

Le seuil pour la production de pages H5 est-il élevé? Le seuil pour la production de pages H5 est-il élevé? Apr 05, 2025 pm 11:45 PM

Le seuil de fabrication de pages H5 n'est ni élevé ni bas, selon l'objectif. Il est plus facile de créer des pages statiques simples, il vous suffit de maîtriser les connaissances de base de HTML et CSS; Il est relativement élevé de créer des pages avec de fortes fonctionnalités interactives et riches, et vous devez avoir une connaissance approfondie de HTML, CSS, JavaScript, des cadres frontaux, l'optimisation des performances et la compatibilité.

Comment le composant du calendrier de conception de fourmis modifie-t-il uniquement le composant actuel pour faire apparaître le dimanche dans la première colonne? Comment le composant du calendrier de conception de fourmis modifie-t-il uniquement le composant actuel pour faire apparaître le dimanche dans la première colonne? Apr 05, 2025 pm 08:12 PM

Antdesign Calendar Component First Column montre la solution de dimanche dans Calendar en utilisant AntDesign ...

Dans le sucre de syntaxe Vue3 non définie, comment utiliser les accessoires composants gracieusement dans CSS V-Bind? Dans le sucre de syntaxe Vue3 non définie, comment utiliser les accessoires composants gracieusement dans CSS V-Bind? Apr 05, 2025 pm 11:06 PM

Comment gracieusement dans CSS dans le sucre de syntaxe Vue3 non définie ...

See all articles