Maison interface Web tutoriel CSS Barres de minuterie dans CSS avec des propriétés personnalisées

Barres de minuterie dans CSS avec des propriétés personnalisées

Apr 03, 2025 am 10:59 AM

Barres de minuterie dans CSS avec des propriétés personnalisées

Récemment, j'ai besoin de mettre en œuvre un minuteur visible dans le projet, et il y a déjà une conception d'interface utilisateur similaire dans le projet en tant que référence. Les utilisateurs n'ont pas besoin de voir le nombre diminuer, mais veulent plutôt voir une «barre» diminuer progressivement du complet au vide. J'ai mentionné cela car il existe de nombreuses façons d'implémenter l'interface utilisateur "temporisateur". Cet article ne concerne pas toutes ces méthodes (les résultats de recherche sur Codepen seraient plus utiles), mais plutôt celui qui fonctionne très bien pour moi.

Le type de minuterie dont j'ai besoin est ce qu'on appelle la barre "Tirl Time" dans le projet. La réalisation d'une action peut déclencher un temps de virage, et la plupart des actions suivantes seront bloquées jusqu'à la fin du temps de virage. Par conséquent, une minuterie claire de la barre rouge est le bon choix d'interface utilisateur. Cela donne aux gens un sentiment de rythme et de flux, vous pouvez "ressentir" l'heure de fin de la minuterie et planifier votre prochaine opération.

La définition de cette minuterie est assez facile ...

Créons une structure d'élément parent / enfant au cas où nous devons coiffer les parties vides du conteneur à l'avenir.

<div>
  <div></div>
</div>
Copier après la connexion

Maintenant, nous ne faisons que les bars intérieurs.

 .
  hauteur: 5px;
  CONTEXTE: GRADIÉ LINÉAIRE (en bas, rouge, # 900);
}
Copier après la connexion

Cela nous donne une belle barre rouge qui peut être utilisée comme indicateur de temps.

Ensuite, nous devons le laisser compter, mais ici, nous devons considérer les fonctionnalités. Une telle minuterie a besoin de savoir combien de temps il faut! Nous pouvons fournir ces informations directement dans HTML. Cela ne signifie pas que nous évitons d'utiliser JavaScript - nous l' embrassons . Nous disons: "Hé, javascript, s'il vous plaît, donnez-nous une variable de durée et nous gérerons le reste."

<div style="--duration: 5;">
  <div></div>
</div>
Copier après la connexion

En fait, cette approche est très adaptée au JavaScript de la manipulation de DOM moderne. Tant que --variable est correct, il peut renvoyer l'élément DOM à tout moment, et nous pouvons nous assurer que la conception gère bien cette situation. Nous ferons une variation comme celle-ci.

Maintenant, commençons l'animation. La bonne nouvelle est que c'est simple. Il s'agit d'une image clé à ligne unique:

 @KeyFrames Roundtime {
  à {
    / * Plus efficace que l'animation `width` * /
    transformée: scalex (0);
  }
}
Copier après la connexion

Nous pouvons "compresser" la barre car le style de la barre n'a pas l'air comprimé lorsque nous évoluons horizontalement. Si nous faisons cela, nous pouvons animer la largeur. Ce n'est pas un gros problème, d'autant plus qu'il ne réajuste pas la disposition de rien d'autre.

Maintenant, nous l'appliquons au bar:

 .
  / * ... * /
  Animation: les étapes de calcul (var (- durée) * 1s) (var (- durée)) en avant;
  Transform-Origin: Centre gauche;
}
Copier après la connexion

Voyez comment nous utilisons la variable --duration pour définir la durée de l'animation? Cela accomplit la plupart du travail. Je l'utilise également pour définir le même nombre d' steps() afin qu'il diminue "Grid by Grid". "Bid-by-Frame" peut être un effet d'interface utilisateur visuel que vous aimez (j'aime), mais il s'adapte également à l'idée que JavaScript peut renvoyer cette barre à tout moment, et Bid-by-Frame le fait peu de choses. J'ai utilisé un entier comme valeur de durée afin qu'il puisse tous deux l'utiliser comme celui-ci.

Cependant, si vous voulez une animation fluide, nous pouvons le faire, par exemple:

<div ...="" data-style="smooth"></div>
Copier après la connexion

Alors n'utilisez pas steps :

 .Round-Time-Bar [Data-Style = "Smooth"] Div {
  Animation: Ronds-Time Calc (var (- Durée) * 1S) Formeaux linéaires;
}
Copier après la connexion

Notez que nous utilisons également des animations linéaires, ce qui semble logique pour la minuterie. Le temps, comme celui-ci, ne se souciera pas. Ou le fera-t-il? Quoi qu'il en soit, c'est votre choix. Si vous voulez une minuterie qui ressemble à une accélération ou à une décélération à certains moments, allez-y.

Nous pouvons utiliser la même API basée sur data-attribute pour implémenter les changements de couleur:

 .Round-temps-bar [data-color = "blue"] div {
  Contexte: Linear-Gradient (en bas, # 64B5F6, # 1565C0);
}
Copier après la connexion

La dernière variante consiste à fixer la largeur de chaque "seconde". De cette façon, une minuterie de 10 secondes sera plus longue qu'une minuterie de 5 secondes:

 .Round-time-bar [data-syle = "fixe"] div {
  Largeur: calc (var (- durée) * 5%);
}
Copier après la connexion

Voici une démonstration:

Faites attention aux conseils pour redémarrer les animations CSS.

Oh, au fait, je sais qu'il y en a un<meter></meter> Élément, il peut être plus sémantique, mais sa propre interface utilisateur ne peut pas être animée comme je veux ici - du moins ne pas la combattre. Mais je ne sais pas si c'est plus accessible? Déclate-t-il sa valeur actuelle de manière utile? Si nous utilisons JavaScript pour mettre à jour en temps réel<meter></meter> , serait-ce une minuterie plus accessible? Si quelqu'un le sait, je peux lier une solution ici.

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
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)

Sujets chauds

Tutoriel Java
1664
14
Tutoriel PHP
1269
29
Tutoriel C#
1249
24
Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Une comparaison des fournisseurs de formulaires statiques Une comparaison des fournisseurs de formulaires statiques Apr 16, 2025 am 11:20 AM

Essayons de savoir un terme ici: "fournisseur de formulaire statique". Vous apportez votre HTML

Actualités hebdomadaires de la plate-forme: attribut HTML Loading, les principales spécifications Aria et le passage de iframe à Shadow Dom Actualités hebdomadaires de la plate-forme: attribut HTML Loading, les principales spécifications Aria et le passage de iframe à Shadow Dom Apr 17, 2025 am 10:55 AM

Dans cette semaine, le Roundup des nouvelles de la plate-forme, Chrome présente un nouvel attribut pour le chargement, les spécifications d'accessibilité pour les développeurs Web et la BBC Moves

L'accord avec l'élément de section L'accord avec l'élément de section Apr 12, 2025 am 11:39 AM

Deux articles ont publié exactement le même jour:

Multipliers multiples: cas général Multipliers multiples: cas général Apr 12, 2025 am 10:52 AM

La première partie de cette série en deux parties a expliqué comment nous pouvons obtenir un curseur à deux pouces. Maintenant, nous examinerons un cas multi-tronçon général, mais avec un autre et

Certains pratiques avec l'élément de dialogue HTML Certains pratiques avec l'élément de dialogue HTML Apr 16, 2025 am 11:33 AM

C'est moi qui regarde l'élément HTML pour la première fois. J'en ai été conscient depuis un certain temps, mais il ne l'a pas encore pris pour un tour. Il a un peu cool et

Comment nous avons tagué Google Fonts et créé des goofont.com Comment nous avons tagué Google Fonts et créé des goofont.com Apr 12, 2025 pm 12:02 PM

Goofonts est un projet parallèle signé par un développeur-femme et un concepteur-mari, tous deux de grands fans de typographie. Nous avons marqué Google

C'est tout dans la tête: gérer la tête de document d'un site alimenté par réact avec un casque React C'est tout dans la tête: gérer la tête de document d'un site alimenté par réact avec un casque React Apr 15, 2025 am 11:01 AM

Le chef de document n'est peut-être pas la partie la plus glamour d'un site Web, mais ce qui y va est sans doute tout aussi important pour le succès de votre site Web que son

See all articles