Aller au contenu principal

Squelette

Espace réservé en attendant le chargement de contenu.

Utilisation de base​

Utilisation de base
import { LhSkeleton } from '@lh-ui/react'

export default function Demo() {
return <LhSkeleton avatar rows={2} sx={{ w: 300 }} />
}

Skeleton Props​

PropDescriptionTypeOptionsValeur par défaut
loadingAfficher le squelette (avec false, les nœuds enfants sont rendus)boolean—true
rowsNombre de lignes de textenumber—3
avatarInclure un espace réservé circulaire d'avatarboolean—false
animatedActiver l'animationboolean—true
sxRaccourci de mise en pageSxProps——

SkeletonItem Props​

LhSkeletonItem est un bloc d'espace réservé exporté séparément, utilisable seul pour composer toute structure de squelette.

PropDescriptionTypeOptionsValeur par défaut
variantForme du bloc'text' | 'rect' | 'circle'—'text'
animatedActiver l'animationboolean—true
classNameNom de classe additionnelstring——
styleStyle en ligne additionnelCSSProperties——
sxRaccourci de mise en pageSxProps——
import { LhSkeletonItem } from '@lh-ui/react'

export default function Demo() {
return (
<div style={{ display: 'flex', gap: 16, width: 300 }}>
<LhSkeletonItem variant="circle" />
<div style={{ flex: 1 }}>
<LhSkeletonItem style={{ marginBottom: 8 }} />
<LhSkeletonItem style={{ width: '60%' }} />
</div>
</div>
)
}
Algorithme de largeur des lignes

Lorsque rows > 1, la dernière ligne est réduite à 60 % pour imiter la mise en page d'un vrai paragraphe ; l'élément racine doit avoir une largeur déterminée (la largeur des lignes est en pourcentage).

Accessibilité

Le conteneur du squelette émet aria-busy="true" + aria-live="polite" ; tous les blocs d'espace réservé sont aria-hidden, de sorte qu'une fois les données prêtes, le lecteur d'écran réannonce le contenu réel. Sous prefers-reduced-motion, l'animation est automatiquement dégradée en espace réservé statique.

Styles​

import '@lh-ui/react/style/skeleton'