recherche
Maisoninterface Webtutoriel CSSAnneaux olympiques du CSS

CSS Olympic Rings

Cet article revisite un projet 2020: Animation des anneaux olympiques 3D. Le code SCSS d'origine, bien que fonctionnel, manquait d'efficacité moderne. Cette version mise à jour utilise Pure CSS, tirant parti des fonctions trigonométriques et une syntaxe couleur relative pour un code plus propre et plus concis. Le résultat est une solution plus performante et élégante.

L'effet 3D est obtenu en utilisant des div couches. Chaque anneau comprend 16 couches, chacune une teinte légèrement différente pour créer un effet d'éclairage. La taille et le positionnement des couches créent l'illusion d'un anneau tridimensionnel.

Structure HTML

Le HTML se compose de cinq éléments <div> (un par anneau), chacun contenant 16 éléments imbriqués <code><i></i> représentant les couches. Chaque élément <i></i> utilise une propriété personnalisée --i (allant de 1 à 16) pour contrôler son style via CSS. Emmet peut simplifier la création de la structure HTML répétitive. Voici un extrait:

<div class="rings">
  <div class="ring ring__1">
    <i style="--i: 1;"></i>
    <i style="--i: 2;"></i>
    <!-- ... more layers ... -->
    <i style="--i: 16;"></i>
  </div>
  <!-- ... more rings ... -->
</div>

La propriété --i sert de multiplicateur dans les calculs CSS pour la position, la taille et la couleur de la couche.

CSS Styling

Le conteneur .rings utilise position: relative pour contenir les anneaux absolument positionnés. Chaque .ring est absolument positionné, et ses enfants <i></i> héritent du positionnement absolu. border-radius: 50% crée la forme circulaire. Une propriété personnalisée --ringColor définit la couleur de base.

La propriété inset, définie sur une valeur négative, positionne les couches à l'extérieur de l'élément .ring, définissant efficacement sa taille. La propriété --translateZ personnalisée, calculée à l'aide de --i, positionne les couches le long de l'axe z pour créer une profondeur:

.ring {
  position: absolute;
  --ringColor: #0085c7;
  i {
    position: absolute;
    inset: -100px;
    border-radius: 50%;
    --translateZ: calc(var(--i) * 2px);
    transform: rotateY(-45deg) translateZ(var(--translateZ));
  }
}

ombrage avec syntaxe de couleur relative

L'ombrage est réalisé en utilisant la syntaxe des couleurs relatives. Une propriété personnalisée --light, calculée à partir de --i, modifie la légèreté de --ringColor:

i {
  --light: calc(var(--i) / 16);
  --layerColor: rgb(from var(--ringColor) calc(r * var(--light)) calc(g * var(--light)) calc(b * var(--light)));
  border: var(--size) var(--layerColor) solid;
  outline: var(--size) var(--layerColor) solid;
}

Cela assombrit dynamiquement les couches vers l'arrière, améliorant l'effet 3D. Un contour est ajouté pour garantir que l'ombrage est visible sur les bords intérieurs et extérieurs de l'anneau.

Façon et animation

La propriété personnalisée --size, calculée à l'aide de la fonction sin(), détermine l'épaisseur de la bordure, créant la forme circulaire de l'anneau:

i {
  --size: calc(sin(var(--i) * 11.25deg) * 16px);
  /* ... other styles ... */
}
L'animation

est implémentée à l'aide de @keyframes et de la propriété animation. La durée de l'animation de chaque anneau est contrôlée par une propriété personnalisée --duration, avec un retard négatif pour échelonner les animations.

touches finales et optimisation

Une légère rotation de l'axe X sur le conteneur .rings ajoute de la perspective. Les pseudo-éléments (::after) créent des ombres floues, améliorant encore l'effet 3D. Le CSS final est hautement optimisé et réutilisable, démontrant la puissance des fonctionnalités CSS modernes. Le code est nettement plus efficace et maintenable que la version SCSS d'origine.

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
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
Flexbox vs Grid: Dois-je les apprendre tous les deux?Flexbox vs Grid: Dois-je les apprendre tous les deux?May 10, 2025 am 12:01 AM

Oui, vous émeuble-chouchoudion-dimensionnal, flexiblelayAndavigationMenus.2)

Mécanique orbitale (ou comment j'ai optimisé une animation de clés CSS)Mécanique orbitale (ou comment j'ai optimisé une animation de clés CSS)May 09, 2025 am 09:57 AM

À quoi cela ressemble-t-il de refactor votre propre code? John Rhea sépare une vieille animation CSS qu'il a écrite et traverse le processus de réflexion pour l'optimiser.

Animations CSS: est-il difficile de les créer?Animations CSS: est-il difficile de les créer?May 09, 2025 am 12:03 AM

CSSANIMATIONSARENOTINÉMENT HAUTS BUTREQUIREPRACTICIT ENCRIPTION DES PROFESSIONS DESPROPERTIES ET TROUVEMENT

@KeyFrames CSS: les astuces les plus utilisées@KeyFrames CSS: les astuces les plus utiliséesMay 08, 2025 am 12:13 AM

@ KeyframeSispopulardUetOtsSversatity andpowerCreatingsMoothcSSanimations.KeyTrickSinclude: 1) DefiingsMoothTransitionsBetwean

Compteurs CSS: un guide complet de la numérotation automatiqueCompteurs CSS: un guide complet de la numérotation automatiqueMay 07, 2025 pm 03:45 PM

CSSCOUNTERSAREUSEUSTTOMAGAUTAMAMATALUMENTSINDWEBDESIGNS.1) Ils ont été des cas de contenu, des listitems et de la forme.

Ombres de défilement moderne à l'aide d'animations axées sur le défilementOmbres de défilement moderne à l'aide d'animations axées sur le défilementMay 07, 2025 am 10:34 AM

L'utilisation d'ombres de défilement, en particulier pour les appareils mobiles, est un peu de UX subtil que Chris a couvert auparavant. Geoff a couvert une approche plus récente qui utilise la propriété d'animation-timeline. Voici encore une autre façon.

Revisiter les cartes d'imageRevisiter les cartes d'imageMay 07, 2025 am 09:40 AM

Passons à travers un rafraîchissement rapide. Les cartes d'image datent jusqu'à HTML 3.2, où, d'abord, les cartes côté serveur, puis les cartes côté client ont défini les régions cliquables sur une image à l'aide de cartes et d'éléments de zone.

État des développeurs: une enquête pour chaque développeurÉtat des développeurs: une enquête pour chaque développeurMay 07, 2025 am 09:30 AM

L'enquête sur l'état des développeurs est désormais ouverte à la participation, et contrairement aux enquêtes précédentes, il couvre tout sauf le code: carrière, lieu de travail, mais aussi santé, passe-temps, etc. 

See all articles

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 !

Outils chauds

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code