Squelette de chargement
Ce composant affiche un faux contenu animé pour ne pas garder une zone vide pendant qu'un vrai contenu plus lent se charge
Utilisation
Appeler la fonction useSkeletonPlaceholder(element, options) avec, en paramètre, l'élément qui va recevoir le squelette, et un objet dont les champs sont les suivants :
| Paramètre | Valeur par défaut | Description |
|---|---|---|
patterns |
* Voir ci-après | Motifs à afficher dans le squelette |
count |
6 |
Nombre de motifs à afficher dans le squelette |
refreshRate |
1_000 |
Délai de rafraîchissement du squelette en ms |
mode |
random |
Indique si le choix des motifs doit être aléatoire ou séquentiel |
loadingClassName |
u-skeleton-placeholder-loading |
Nom de la classe appliquée à l'élément englobant tant que le chargement est actif |
L'appel à useSkeletonPlaceholder(element, options) renvoie une fonction qui, quand elle est appelée, stoppe le fonctionnement animé du squelette.
Cette fonction prend un booléen en paramètre qui, à true, indique que le contenu de l'élément englobant (element) doit être vidé.
Mode d'affichage
Par défaut, le choix des motifs affichés est aléatoire. Il peut être défini sur séquentiel, ainsi le moteur d'affichage choisira les motifs décrits dans le tableau de motifs
patterns un par un et recommencera au début du tableau si nécessaire.
SKELETON_PLACEHOLDERS_MODE.RANDOM: sélection aléatoire de motifsSKELETON_PLACEHOLDERS_MODE.SEQUENTIAL: sélection séquentielle de motifs
Liste des motifs
Le paramètre patterns de la fonction useSkeletonPlaceholder() est un tableau dont la valeur par défaut inclut toute la liste ci-dessous. Les éléments affichés sont choisis
au hasard et l'affichage est rafraîchi selon le délai défini dans le paramètre refreshRate.
Les motifs qui peuvent être affichés dans un squelette sont, par défaut, les suivants :
SKELETON_PLACEHOLDERS_PATTERNS.CARD: Carte de contenu (image + titre + description + boutons)SKELETON_PLACEHOLDERS_PATTERNS.MEDIA: Média vertical (image + icône + titre)SKELETON_PLACEHOLDERS_PATTERNS.LIST: Liste (3 items, titre + description)SKELETON_PLACEHOLDERS_PATTERNS.TABLE: Tableau (3 colonnes × 4 lignes)SKELETON_PLACEHOLDERS_PATTERNS.AVATAR_LEFT: Avatar aligné à gauche (photo + titre + description)SKELETON_PLACEHOLDERS_PATTERNS.AVATAR_RIGHT: Avatar aligné à droite (photo + titre + description)SKELETON_PLACEHOLDERS_PATTERNS.PROFILE_LEFT: Carte de profil alignée à gauche (photo + titre + description + boutons)SKELETON_PLACEHOLDERS_PATTERNS.PROFILE_RIGHT: Carte de profil alignée à droite (photo + titre + description + boutons)SKELETON_PLACEHOLDERS_PATTERNS.IMAGE: Photo seuleSKELETON_PLACEHOLDERS_PATTERNS.TEXT: Paragraphe de texteSKELETON_PLACEHOLDERS_PATTERNS.GRID: Grille de contenu (6 items, image + titre)
Il est possible de créer vos propres motifs en respectant les règles suivantes :
Un motif est un objet qui contient 2 paramètres :
className: le nom de la classe à utiliser (skeleton-placeholder--...)childrenCount: le nombre d'éléments (<div>) à afficher dans le motif. Ces éléments permettent de représenter diverses choses : photos, texte, etc.
Charge, ensuite, au CSS du projet d'appliquer les styles adéquats pour formater l'affichage de la carte.
Utilisation sans JS
Il est possible d'utiliser le squelette sans passer par le script. Pour cela, il suffit d'utiliser un flux HTML semblable à celui-ci :
<div class="skeleton-placeholder skeleton-placeholder--card" style="--index: 0">
<div class="skeleton-placeholder__item skeleton-placeholder__item--0"></div>
<div class="skeleton-placeholder__item skeleton-placeholder__item--1"></div>
<div class="skeleton-placeholder__item skeleton-placeholder__item--2"></div>
<div class="skeleton-placeholder__item skeleton-placeholder__item--3"></div>
...
</div>
<div class="skeleton-placeholder skeleton-placeholder--media" style="--index: 1">
<div class="skeleton-placeholder__item skeleton-placeholder__item--0"></div>
<div class="skeleton-placeholder__item skeleton-placeholder__item--1"></div>
...
</div>
<div class="skeleton-placeholder skeleton-placeholder--text" style="--index: 2">
<div class="skeleton-placeholder__item skeleton-placeholder__item--0"></div>
<div class="skeleton-placeholder__item skeleton-placeholder__item--1"></div>
...
</div>
...