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.

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 :

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 :

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>
...