Communitygithub.com

Système de Squelettes d'État

Concevoir un cadre systématique pour les « écrans squelettes » qui gère la performance perçue et la stabilité de la mise en page (CLS) en mappant les « os » de l'interface au contenu entrant.

Qu'est-ce que Système de Squelettes d'État ?

Le Système de Squelettes d'État fournit une méthodologie pour concevoir l'état de « chargement » d'une interface. Contrairement aux spinners ou barres de progression génériques, les squelettes approximent la mise en page finale à l'aide d'« os » (formes basse fidélité), ce qui réduit le temps d'attente perçu par l'utilisateur et empêche le Cumulated Layout Shift (CLS) en réservant l'espace nécessaire avant l'arrivée du contenu. Ce système est particulièrement utile pour les tableaux de bord riches en données, les flux de contenu, les grilles d'images et les applications monopages. Il est compatible avec n'importe quelle plateforme frontend (HTML/CSS, React, Vue, etc.) car il se concentre sur les principes de conception et les règles d'accessibilité. Le flux de travail comprend le mappage de la géométrie cible, la définition d'une hiérarchie d'os, l'établissement d'une correspondance spatiale, la conception de l'animation de scintillement, et la planification d'une transition en fondu vers le contenu réel. Les règles clés incluent l'affichage du squelette uniquement si le chargement dépasse 300 ms, l'utilisation de conteneurs à ratio fixe pour éviter le CLS, et le respect des préférences de mouvement réduit pour l'accessibilité.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/coastdigitalgroup/coastai-skills/tree/HEAD/website-design/skeleton-state-system

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Système de Squelettes d'État ?

Objectif

Le Système de Squelettes d'État fournit une méthodologie pour concevoir l'état de « chargement » d'une interface. Contrairement aux spinners ou barres de progression génériques, les squelettes approximent la mise en page finale à l'aide d'« os » (formes basse fidélité), ce qui réduit le temps d'attente perçu par l'utilisateur et empêche le Cumulated Layout Shift (CLS) en réservant l'espace nécessaire avant l'arrivée du contenu.

Cas d'Utilisation

  • Tableaux de Bord Riches en Données : Lorsque plusieurs widgets se chargent à des vitesses différentes.
  • Flux de Contenu : Défilement à travers des listes d'articles, de produits ou de publications sociales.
  • Grilles Riches en Images : Réserver de l'espace pour les images haute résolution afin d'éviter les « sauts » de page.
  • Vues de Recherche et de Filtre : Fournir un retour immédiat indiquant que le système traite une requête.
  • Applications Monopages (SPA) : Gérer les transitions entre les routes où les données sont récupérées de manière asynchrone.

Quand NE PAS Utiliser

  • Interactions Instantanées : Si le contenu se charge en moins de 300 ms, un squelette peut provoquer un « scintillement » gênant.
  • Chargements Simples et Peu Contextuels : Pour les petits éléments comme un seul bouton ou une petite étiquette, un spinner standard ou un texte « Chargement... » est plus approprié.
  • Contenu Statique : Contenu codé en dur ou mis en cache qui s'affiche immédiatement.
  • Données Temps Réel à Haute Vélocité : Si les données changent si vite que le squelette apparaîtrait et disparaîtrait constamment, cela peut provoquer une fatigue visuelle.

Entrées

  1. Mise en Page Cible : La conception finale « complètement chargée » du composant ou de la page.
  2. Variables de Contenu : Quelles parties de l'interface sont dynamiques (Texte, Images, Prix, Avatars) ?
  3. Dimensions Spatiales : La hauteur, la largeur et les ratios exacts des éléments finaux.
  4. Tonalité de Marque : Les couleurs principales et secondaires utilisées pour la base de l'« os » et l'effet de scintillement.

Sorties

  1. Plan du Squelette : Un plan basse fidélité montrant la disposition des os.
  2. Spécification des Os : Définitions pour la forme (cercles vs rectangles) et le dimensionnement (fixe vs basé sur un pourcentage).
  3. Stratégie de Transition : Règles pour la façon dont le squelette s'estompe et le contenu apparaît en fondu.
  4. Exigences d'Accessibilité : Guide pour l'implémentation de aria-busy et aria-hidden.

Flux de Travail

1. Mapper la Géométrie « Cible »

Décomposer le composant final en ses primitives géométriques de base :

  • Cercles : Pour les avatars, les icônes ou les boutons arrondis.
  • Rectangles (Arrondis) : Pour les cartes, les conteneurs d'images et les blocs de texte.
  • Lignes : Pour les lignes de texte simples (titres, métadonnées).

2. Définir la Hiérarchie des Os

Tous les éléments n'ont pas besoin d'un os. Concentrez-vous sur les « ancres » structurelles :

  • Os Principal : Le plus grand élément visuel (par exemple, une image de produit).
  • Os Secondaires : Titres et métadonnées principales.
  • Os Tertiaires : Petits détails de métadonnées ou boutons d'action (peuvent souvent être omis s'ils sont trop petits).

3. Établir la Correspondance Spatiale (La Règle CLS)

Assurez-vous que les dimensions du squelette correspondent exactement au conteneur du contenu final :

  • Ratio d'Aspect : Utilisez des ratios d'aspect fixes (par exemple, 16:9 pour les vidéos) pour l'os afin qu'il ne change pas de taille lorsque l'élément se charge.
  • Dimensionnement du Texte : Utilisez des os qui correspondent à la hauteur de ligne et à la largeur approximative du texte qu'ils représentent.

4. Concevoir le Rythme et le Scintillement

Les squelettes doivent sembler « vivants » mais pas distrayants :

  • Couleur de Base : Utilisez une couleur neutre à faible contraste (par exemple, Gris Clair).
  • Scintillement (La Pulsation) : Appliquez une animation de dégradé subtile qui se déplace de gauche à droite.
  • Synchronisation : Si plusieurs squelettes sont à l'écran, assurez-vous que leurs animations sont synchronisées pour éviter le chaos visuel.
  • Mouvement Réduit : Enveloppez l'animation image par image du scintillement dans une requête @media (prefers-reduced-motion: reduce) qui désactive le mouvement et revient à un os statique ou à une pulsation d'opacité douce.

5. Définir la Transition de « Passation »

Planifiez la sortie du squelette :

  • Temporisation : Utilisez un court fondu d'apparition (par exemple, 200 ms) pour le contenu réel afin d'éviter une transition « brusque ».
  • Échelonnement : Pour les listes, décidez si les éléments doivent apparaître tous en même temps ou au fur et à mesure qu'ils se chargent individuellement.

Règles de Décision

  • La Règle des 300 ms : N'affichez un squelette que si le chargement devrait prendre plus de 300 ms.
  • Précision des Os : Un os doit représenter le conteneur, pas les données spécifiques. Par exemple, un os de texte doit être une simple barre, pas une ligne irrégulière imitant des lettres spécifiques.
  • Nombre de Lignes : Pour le texte multiligne, utilisez 2 ou 3 os de largeurs variables (par exemple, la dernière ligne à 60 % de largeur) pour simuler le flux naturel d'un paragraphe.
  • Spinner vs Squelette :
    • Utilisez un Squelette pour les transitions au niveau de la page ou de la section.
    • Utilisez un Spinner pour les actions localisées de petite taille (comme un état de bouton « Enregistrement... »).

Contraintes

  • Accessibilité : Les squelettes doivent être marqués avec aria-hidden="true" afin que les lecteurs d'écran n'essaient pas de « lire » les barres vides. Le conteneur parent doit utiliser aria-busy="true" pendant le chargement, et idéalement contenir une région aria-live="polite" visuellement cachée qui annonce « Chargement » puis l'état de fin une fois que le contenu remplace le squelette — n'utilisez pas aria-live sur les os du squelette eux-mêmes. Respectez prefers-reduced-motion pour l'effet de scintillement.
  • Contraste : Les couleurs du squelette doivent être distinctes de l'arrière-plan mais pas à un contraste si élevé qu'elles ressemblent à du contenu actif.
  • Responsivité : Les os du squelette doivent évoluer en utilisant la même logique de grille/flex que le contenu final.

Schémas d'Échec Courants

  • Le « Saut CLS » : Un squelette de 200 px de haut remplacé par un contenu de 300 px de haut, provoquant un « saut » de la page.
  • Surcharge de Scintillement : Des animations trop rapides ou à contraste trop élevé, provoquant des nausées ou des distractions.
  • Inadéquation Contenu-Os : Utiliser un os circulaire pour une image carrée, ou vice versa.
  • Surcomplexité : Essayer de recréer chaque petite icône sous forme d'os, ce qui donne une mise en page « fantôme » encombrée.
  • Le « Squelette Statique » : Un squelette sans animation, qui peut être confondu avec une page cassée ou vide.

Critères de Validation

  • Les dimensions du squelette correspondent exactement à l'état final « chargé » (Zéro CLS).
  • Les ratios d'aspect des images/vidéos sont réservés à l'aide de conteneurs fixes.
  • L'animation de scintillement est subtile et se déplace de gauche à droite.
  • Les zones riches en texte utilisent des os qui simulent des longueurs de ligne naturelles.
  • aria-hidden="true" est appliqué aux éléments du squelette, et le conteneur de chargement utilise aria-busy="true".
  • L'animation de scintillement respecte prefers-reduced-motion: reduce.
  • La transition du squelette au contenu est un fondu en douceur (environ 200 ms).
  • Le squelette n'apparaît pas pour les chargements plus rapides que 300 ms.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for progressive disclosure using accordions, ensuring structural integrity, visual affordances, and accessibility across different content densities and devices.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for long-form content, managing readability, vertical rhythm, and information density to ensure a superior reading experience.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for informational elements that communicate state (Badges) and categorization (Tags) with clarity and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for non-overlay notifications, managing global announcements and contextual inline alerts to communicate system states without interrupting the user's flow.

coastdigitalgroup/coastai-skills

Design and implement a systematic, asymmetrical bento-grid layout framework to organize diverse content types cohesively while maintaining strict visual hierarchy, logical focus order, and responsive flexibility.

coastdigitalgroup/coastai-skills

Design a responsive, mobile-first bottom navigation bar and persistent action dock system for mobile websites and web applications, establishing spatial anchors, tab bar anatomy, badge indicators, thumb-zone ergonomics, safe area inset handling, active/inactive state contrast, and desktop responsive adaptation rules.

coastdigitalgroup/coastai-skills

Design a mobile-first bottom sheet overlay system with configurable detents, drag affordances, safe area padding, responsive desktop modal/popover adaptation, and WCAG AA accessibility compliance.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for secondary navigation trails that provide orientation, context, and one-click access to parent levels in deep information architectures.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for buttons and interactive triggers, managing visual hierarchy, variant logic, and action grouping to ensure clear intent and accessible interaction.

coastdigitalgroup/coastai-skills

Design a systematic framework for date and time selection, managing calendar grids, range pickers, and scheduling interfaces to ensure precision and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for modular content containers that maintain hierarchy, structural integrity, and action alignment across variable content and responsive viewports.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for horizontal discovery components, managing navigation affordances, scroll behavior, and accessibility to ensure effective content density without compromising usability.

coastdigitalgroup/coastai-skills

Design a systematic, highly accessible, and developer-friendly UI layout framework for code blocks, snippet showcases, multi-file code tabs, line-highlighting, diff views, and syntax token contrast in technical documentation and developer platforms.

coastdigitalgroup/coastai-skills

Design a systematic framework for global command menus (Cmd+K panels) that combines keyboard-driven navigation, command execution, and shortcut discovery into an accessible, responsive overlay.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for threaded conversations, managing nesting depths, action hierarchies, and community signaling to foster engagement and readability.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for side-by-side comparison interfaces, managing high attribute density and responsive complexity to support informed decision-making.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for user privacy, managing consent banners, preference centers, and persistent privacy controls to balance legal compliance with user trust.

coastdigitalgroup/coastai-skills

Design and implement a systematic, highly accessible, and responsive visual layout framework for conversational chat widgets, live chat boxes, and chatbot panels that ensures clear message scannability, native focus flow, and seamless mobile keyboard adaptation.

coastdigitalgroup/coastai-skills

Design a systematic, accessible, and high-conversion framework for custom select dropdowns and comboboxes, defining anatomy, states, search-filtering, and responsive mobile-adaptive patterns.

coastdigitalgroup/coastai-skills

Design and implement a systematic color palette that ensures WCAG 2.2 accessibility compliance. Trigger this skill when asked to define brand colors, create UI themes, or establish a visual system for a website.

Skills associés