GlowCrack
BêtaEffetUne fissure stylisée qui laisse passer la lumière, sur une carte, une image, un bouton ou dans les lettres d'un titre.
- Frameworks
- ReactVueVanilla
- Technologies
- SVGCSS
- Déclenché par
- PointeurApparition à l'écranPiloté par l'application
- Mis à jour le
- Construit sur
- FrameLoopPointerTracker
GlowCrack fend un élément d'une fissure anguleuse d'où sort de la lumière, avec une lueur sur la surface autour. La fissure se forme quand l'élément apparaît, au survol, à la demande, ou au fil d'une valeur de progression. Son dessin suit la taille de l'élément et évite de lui-même le texte qu'il contient. Utilisez-la pour marquer un moment : un lancement, un titre, une page 404, une action principale.
Installation
Installez l'élément et ses dépendances en une commande :
pnpm dlx shadcn@latest add https://o-ui.hd987.dev/r/glow-crack.jsonGlowCrack n'a aucune dépendance npm. Il s'appuie sur deux primitives d'O-UI, FrameLoop et PointerTracker, que la commande installe avec lui dans des dossiers voisins. Ses adaptateurs utilisent seulement cn de @/lib/utils. Les prérequis communs à tous les composants (Tailwind CSS v4, React 19 ou Vue 3.5) sont décrits dans Installation.
Utilisation
GlowCrack s'utilise de deux façons : il est lui-même la surface fissurée (une carte, un titre, l'enveloppe d'une image), ou il s'applique à votre propre élément par un hook (voir Utiliser sans enveloppe). Sans aucune option, la fissure part d'un bord et se forme quand l'élément entre dans l'écran.
import { GlowCrack } from "@/components/o-ui/glow-crack/glow-crack";
export function ReleaseCard() {
return (
<GlowCrack className="rounded-2xl border border-border bg-card p-8">
<h3 className="text-2xl font-semibold">Something broke through.</h3>
<p className="mt-2 text-muted-foreground">A new engine, rebuilt from the ground up.</p>
</GlowCrack>
);
}Sur une carte claire (bg-card en thème clair), la fissure prend un autre rendu que dans l'aperçu : une fente dorée, peinte et creusée, car une lumière ne se voit pas sur du blanc (voir Thème clair et sombre). Pour retrouver la lumière de l'aperçu sur un site clair, ajoutez la classe dark à GlowCrack.
Quelques règles font la différence :
- Choisissez le mode selon ce que l'élément contient.
surface, par défaut : la fissure est dans le fond de l'élément, sous son contenu. Le texte et les boutons restent nets par-dessus.overlay: par-dessus tout. C'est le mode des images et des vidéos.text: la fissure n'apparaît que dans les lettres. Réservez-le aux grands titres en gras, sur un bloc ou uninline-block.
- Une image s'enveloppe. Une
<img>, une<video>ou un<input>ne peuvent pas contenir la fissure : sur eux, GlowCrack ne fait rien, sans erreur. Posez-le autour, en modeoverlay. - Laissez-le placer la fissure. Avec
originetangleà"auto"(par défaut), en modesurface, GlowCrack choisit le tracé qui croise le moins le texte de l'élément. Si vous les fixez, faites vous-même passer la fissure à côté du texte courant : sur la lumière, un petit texte perd en contraste. - Ni
space-y-*nidivide-ysur GlowCrack. La fissure est dessinée dans un élément ajouté en dernier enfant : ces classes et les sélecteurs:last-childne visent plus le bon élément. Préférezflex flex-col gap-*. - L'arrondi se pose sur GlowCrack. La fissure et sa lumière restent dans l'élément et suivent son arrondi.
Exemples
Sur une image
Une image ne peut pas porter la fissure : GlowCrack l'enveloppe et dessine par-dessus, en mode overlay. Deux fractures partent ici du bord haut (cracks: 2). Sur une image, la lumière s'ajoute toujours à ce qu'il y a dessous, quel que soit le thème. L'image elle-même n'est pas modifiée.
Bouton d'appel à l'action
Le hook useGlowCrack (le composable du même nom en Vue) fissure votre propre bouton, sans enveloppe. Avec trigger: "hover", la fissure s'ouvre au survol et au focus clavier, puis se referme quand ils partent. Sur un écran tactile, elle se forme quand le bouton apparaît. Le dessin s'affine de lui-même à la taille d'un bouton ; branching: 0 garde une seule fracture nette.
Titre fissuré
En mode text, la fissure ne passe que dans les lettres, et la lumière déborde de leurs bords. Sur des lettres claires, elle se lit comme un marbre fendu ; sur des lettres sombres, la lumière s'y ajoute. GlowCrack dessine dans une copie décorative du texte, posée exactement dessus : le titre reste un vrai titre, lu une seule fois.
Impact au clic
Avec trigger: "manual", rien ne se forme avant un appel à crack(). Passé à crack(), l'événement du clic fait partir une nouvelle fissure du point touché. heal() la referme. Un clic au clavier n'a pas de position : la démo fait alors partir la fissure du centre.
Au défilement
La prop progress, de 0 à 1, pilote la formation à la place du déclencheur. Ici, elle suit la position de la carte grâce au hook useViewProgress de ViewProgress, une primitive à installer en plus. La plage va de entry 30% (30 % de la carte entrée par le bas) à contain 20% (peu après qu'elle est entièrement visible). La fissure s'ouvre pendant que la carte entre, et se referme si l'on remonte.
Personnalisation
Les réglages se regroupent en trois familles :
- La forme.
seedtire une autre fissure.originetangleplacent la fracture principale,lengthla prolonge,cracksen ajoute depuis le même point.widthrègle l'ouverture,roughnessle nombre de cassures,branchingles branches et les éclats. - La lumière.
colorsla colore : la première couleur la remplit, les autres circulent dedans.intensityrègle l'éclat,glowetspreadla lueur sur la surface,depthl'ombre qui creuse la fente. - La vie.
breathefait varier l'éclat,driftdéplace les couleurs,boostetproximityrèglent la réaction au pointeur.
La taille suit l'élément. width et spread sont donnés en pixels pour une carte moyenne (environ 400 × 240). Sur un bouton, l'ouverture, la lueur et les facettes s'affinent ; sur un hero, elles s'élargissent. Cette adaptation est volontairement moins que proportionnelle : un bouton garde une fente lisible, un hero n'a pas une tranchée. scale la remplace par un facteur fixe : à 1, width et spread sont pris tels quels, en pixels.
Combinaisons prêtes à copier, à placer sur la même carte que l'aperçu. En Vue, écrivez :colors="[…]" et :intensity="1.2".
// Magma: wider, rougher and hotter.
<GlowCrack colors={["#ff7a2e", "#ffd08a", "#ff3d2e"]} intensity={1.2} glow={0.9} width={5} roughness={0.65} spread={34} />
// Cold energy: calm facets, many branches, moving light.
<GlowCrack colors={["#8fd3ff", "#e6f6ff", "#a78bfa"]} roughness={0.3} branching={0.75} drift={0.8} breathe={0.45} />
// Still light: no continuous motion, no pause control needed.
<GlowCrack breathe={0} drift={0} />Dans la démo, chaque carte fixe aussi origin, angle et length pour garder sa fissure dans le haut de la carte. Sans eux, l'évitement automatique du texte s'en charge.
Intégration
Next.js et Nuxt
- Next.js. Le fichier React de GlowCrack commence par
"use client": vous pouvez l'importer depuis un composant serveur. Un fichier qui lui passeonStart,onComplete,actionsRefou uneref, ou qui appelleuseGlowCrack, doit commencer lui aussi par"use client". - Rendu serveur. Il produit l'élément et son contenu, sans la fissure. Elle est ajoutée au navigateur, sans écart d'hydratation.
- Nuxt. Le composant s'utilise tel quel : la fissure n'est créée qu'au montage.
Contrôle programmatique
La fissure se pilote par crack(), heal() et replay(). onStart et onComplete (en Vue, les événements start et complete) signalent le début et la fin de chaque formation.
"use client";
import { useRef } from "react";
import { GlowCrack, type GlowCrackActions } from "@/components/o-ui/glow-crack/glow-crack";
export function Vault() {
const actions = useRef<GlowCrackActions>(null);
return (
<GlowCrack
actionsRef={actions}
trigger="manual"
onComplete={() => console.log("open")}
className="rounded-2xl border bg-card p-8"
>
<button
type="button"
// A keyboard click has no position: crack from the center.
onClick={(event) => actions.current?.crack(event.detail === 0 ? { x: 0.5, y: 0.5 } : event)}
>
Break it
</button>
</GlowCrack>
);
}La ref habituelle reste l'élément racine ; actionsRef reçoit les contrôles. Le hook useGlowCrack les renvoie aussi, toujours le même objet.
crack()sans argument forme la fissure avec sa forme actuelle ; sur une fissure déjà ouverte, il ne fait rien.- Avec un événement (tout objet qui a
clientXetclientY) ou un point en fractions de la boîte ({ x: 0.5, y: 0.5 }),crack()tire une nouvelle fissure depuis ce point et la forme depuis zéro, même pendant une formation. heal()referme la fissure en sens inverse.replay()la referme d'un coup, puis la forme de nouveau. Une fissure refermée parheal()le reste : le déclencheurvisiblene la reforme pas.- Tant que
progressest un nombre, ou quedisabledest vrai, ces appels n'ont pas d'effet.onStartetonCompletene sont pas appelés quandprogresspilote la fissure.
GlowCrack écrit aussi son état sur l'élément, dans data-crack : closed, opening, open ou closing. Il se lit en CSS, par exemple pour faire passer un texte en text-foreground une fois la fissure ouverte : data-[crack=open]:text-foreground sur l'élément, ou group-data-[crack=open]:text-foreground sur un enfant, avec group sur GlowCrack. Ne cachez pas de contenu en attendant cet état : sans JavaScript, il ne viendrait jamais.
Mettre en pause toutes les animations
La pause commune de FrameLoop arrête d'un coup toutes les animations continues de la page, fissures comprises. Reliez-la à un interrupteur visible, par exemple dans l'en-tête du site.
"use client";
import { useAnimationsPaused } from "@/components/o-ui/frame-loop/frame-loop";
import { setAnimationsPaused } from "@/components/o-ui/frame-loop/frame-loop-core";
export function MotionToggle() {
const paused = useAnimationsPaused();
return (
<button type="button" aria-pressed={paused} onClick={() => setAnimationsPaused(!paused)}>
Pause animations
</button>
);
}La pause fige la respiration et la dérive des couleurs. Une formation en cours se termine, et la lumière réagit encore au pointeur. La prop paused fait de même pour une seule fissure.
Thème clair et sombre
Avec tone à "auto", GlowCrack choisit son rendu d'après ce qui est peint derrière lui :
- en mode
surface, le fond de l'élément et de ses ancêtres, fonds translucides compris (une cartebg-white/5sur une page sombre reste sombre) ; - en mode
text, la couleur du texte ; - en mode
overlay, toujours le rendu sombre : la lumière s'ajoute à l'image.
Sur une surface sombre, la lumière s'ajoute à ce qu'il y a dessous. Sur une surface claire, une lumière ajoutée ne se verrait pas : la fente est peinte, plus saturée, avec une ombre plus marquée. Un changement de thème (classe ou data-theme sur <html>, réglage du système) est suivi en direct. tone: "dark" ou tone: "light" impose l'un des deux rendus, par exemple sur une image de fond posée en CSS, que GlowCrack ne peut pas lire.
Pour une surface sombre dans les deux thèmes, comme dans les exemples, ajoutez la classe dark à GlowCrack : les jetons du thème y prennent leurs valeurs sombres (bg-card, text-card-foreground).
Utiliser sans enveloppe
Pour fissurer un élément de votre propre composant, sans l'élément racine que pose GlowCrack, utilisez le hook useGlowCrack en React, ou le composable du même nom en Vue. Les options sont les mêmes.
"use client";
import { type ReactNode, useRef } from "react";
import { useGlowCrack } from "@/components/o-ui/glow-crack/glow-crack";
export function LaunchCard({ children }: { children: ReactNode }) {
const cardRef = useRef<HTMLElement>(null);
const actions = useGlowCrack(cardRef, { trigger: "manual" });
return (
<article ref={cardRef} className="relative isolate rounded-2xl border bg-card p-6">
{children}
<button type="button" onClick={() => actions.crack()}>
Launch
</button>
</article>
);
}- La fissure est dessinée dans un élément ajouté en dernier enfant. Si votre framework réécrit le contenu de l'élément, elle revient à la frame suivante.
- GlowCrack pose
isolation: isolateet, si besoin,position: relativesur l'élément ; ses styles d'origine reviennent au démontage. Posez vous-mêmerelative isolate, comme dans ces exemples : la mise en page ne bouge alors pas quand le script arrive. - Le hook et le composable acceptent une ref ou un élément (en Vue : un élément, une
refde template ou un getter, et des options en objet,refou getter). Une option retirée revient à sa valeur par défaut.
API
| Prop | Type | Défaut | Description |
|---|---|---|---|
seed | number | 1 | Graine de la forme, entier positif ou nul (une fraction est arrondie vers le bas). Chaque valeur tire une autre fissure, toujours la même pour une même valeur et une même mise en page. Dans une liste, donnez-en une différente à chaque élément. |
origin | "auto" | GlowCrackPoint | "auto" | Point de départ, en fractions de la boîte de l'élément : `{ x, y }`, de 0 à 1 sur chaque axe. 0 ou 1 place le départ sur un bord ; un point intérieur, avec plusieurs `cracks`, donne une étoile. Avec `"auto"`, la graine choisit un point sur un bord, et, en mode `surface` avec `angle` à `"auto"`, le tracé qui croise le moins le texte. |
angle | number | "auto" | "auto" | Direction de la fracture principale, en degrés : toute valeur, ramenée entre 0 et 360 (0 vers la droite, 90 vers le bas, -10 un peu vers le haut). `"auto"` vise à peu près le centre de l'élément. |
length | number | 0.8 | Longueur de chaque fracture principale, en fraction de la diagonale de l'élément, de 0,1 à 1,5. Au-delà de 1, elle sort de l'élément et paraît le traverser. |
cracks | number | 1 | Nombre de fractures qui partent de l'origine, de 1 à 6. Depuis un bord, elles s'ouvrent en éventail ; depuis l'intérieur, en étoile. |
width | number | 4 | Ouverture la plus large, près de l'origine, en pixels CSS pour une carte moyenne (environ 400 × 240), de 0,5 à 16. Elle s'affine jusqu'à une pointe, et suit la taille de l'élément (voir `scale`). |
roughness | number | 0.5 | Cassures, de 0 à 1 : de longues facettes calmes à 0, un zigzag serré et anguleux à 1. |
branching | number | 0.5 | Branches et éclats, de 0 à 1. À 0, une seule fracture nette, le bon choix sur un bouton ; à 1, plusieurs branches en Y et de petits éclats de lumière. |
scale | number | "auto" | "auto" | `"auto"` adapte l'ouverture, la lueur et la longueur des facettes à la taille de l'élément : plus fines sur un bouton, plus larges sur un hero. Un nombre, de 0,25 à 4, fixe ce facteur : à 1, `width` et `spread` sont pris tels quels, en pixels. |
colors | readonly string[] | ["#ffc27a", "#fff0c9", "#ff8a66"] | Couleurs de la lumière, de 1 à 6 couleurs CSS. La première la remplit, les autres circulent dedans en larges taches. Une seule couleur donne une lumière unie, qui ne dérive pas. En mode `text`, utilisez des valeurs écrites en clair (hex, `rgb()`, `oklch()`) : ni `var(--…)` ni `currentColor` n'y sont résolus. |
intensity | number | 1 | Éclat du centre et de la lueur, de 0 à 2. À 0, la fente reste colorée mais sans lumière. |
glow | number | 0.7 | Force de la lumière qui se répand sur la surface, de 0 à 1. À 0, il ne reste que la fente et son centre. En mode `text`, c'est `spread` qui règle la lumière autour des lettres. |
spread | number | 28 | Portée de cette lueur autour de la fente, en pixels CSS pour une carte moyenne, de 0 à 160. Elle suit la taille de l'élément (voir `scale`). |
depth | number | 0.4 | Ombre le long de la fente, qui la creuse dans la surface, de 0 à 1. Plus marquée sur une surface claire. |
mode | GlowCrackMode | "surface" | `"surface"` dessine la fissure dans le fond de l'élément, sous son contenu ; `"overlay"` par-dessus tout (images, vidéos) ; `"text"` seulement dans les lettres. |
tone | GlowCrackTone | "auto" | `"auto"` choisit d'après ce qui est peint derrière l'élément, la couleur du texte en mode `text`, et le rendu sombre en mode `overlay` (voir Thème clair et sombre). `"dark"` ajoute la lumière ; `"light"` la peint, plus saturée et mieux creusée, pour une surface claire. |
trigger | GlowCrackTrigger | "visible" | `"visible"` forme la fissure une fois, quand le haut de l'élément dépasse 85 % de la hauteur de l'écran ou qu'il est entièrement visible. `"hover"` l'ouvre au survol et au focus clavier, et la referme après ; sur un écran tactile, elle se forme à l'apparition. `"manual"` attend `crack()`. |
progress | number | null | null | Avancement de la formation piloté par votre code, de 0 (fermée) à 1 (ouverte) : défilement, chargement. Un nombre prend la main sur `trigger` et sur les appels. `null` la rend : une fissure laissée entre les deux se termine selon le déclencheur. |
duration | number | 0.9 | Durée d'une formation, en secondes, de 0,2 à 5. La fissure claque vite, puis ralentit. Une fermeture dure un peu moins. |
delay | number | 0 | Attente avant la formation, en secondes, de 0 à 10, avec `trigger: "visible"`. Pour faire apparaître plusieurs fissures l'une après l'autre. |
breathe | number | 0.3 | Variation lente et irrégulière de l'éclat, de 0 à 1. À 0, l'éclat reste fixe. |
drift | number | 0.5 | Mouvement des couleurs à l'intérieur de la lumière, de 0 (immobiles) à 1. Il demande au moins deux couleurs, et ne s'applique pas au mode `text`. |
boost | number | 0.5 | Lumière ajoutée près du pointeur et au focus clavier, de 0 à 1. À 0, la fissure ne réagit plus. Sans effet en mode `text`. |
proximity | number | 160 | Distance d'action du pointeur autour de l'élément, en pixels CSS, de 0 à 400. À 0, le pointeur n'agit qu'au-dessus de l'élément. Sans effet en mode `text`. |
paused | boolean | false | Booléen : fige la respiration et la dérive de cette fissure. La formation et le pointeur répondent encore. Pour toute la page, voir `setAnimationsPaused` de FrameLoop. |
disabled | boolean | false | Booléen : éteint la fissure en 0,3 s, sans démonter le composant. Les déclencheurs et les appels sont alors ignorés. Réactivée, elle revient dans l'état où elle était. |
reducedMotion | ReducedMotion | "user" | `"user"` suit le réglage du système, `"always"` remplace la formation par un fondu et fige la lumière, `"never"` garde le mouvement : par exemple quand la personne a réactivé les animations dans les réglages de votre site. |
onStart | (() => void) | undefined | Appelée au début de chaque formation, `replay()` et reprises comprises. |
onComplete | (() => void) | undefined | Appelée quand une formation est terminée, la fissure ouverte. |
Les nombres hors plage sont ramenés dans la plage. Une valeur invalide garde la valeur courante, ou la valeur par défaut à la création. Les couleurs invalides sont ignorées, comme les mots-clés inherit, initial, unset et revert, et celles au-delà de la sixième.
Les adaptateurs ajoutent as, l'élément racine : div (par défaut), span, section, article, aside, figure, li, p ou un titre de h1 à h6. Ils transmettent les attributs natifs, ainsi que className en React et class en Vue. En React, actionsRef reçoit les contrôles ; en Vue, la ref expose { el, crack, heal, replay }, et onStart et onComplete deviennent les événements start et complete.
En vanilla, createGlowCrack(element, options) renvoie une instance : update(options) ne change que les options passées, crack(point?), heal() et replay() pilotent la fissure, destroy() retire tout. Le hook et le composable useGlowCrack prennent les mêmes options et renvoient { crack, heal, replay }.
Accessibilité
Ce que fait GlowCrack
- La fissure est décorative : les lecteurs d'écran l'ignorent, et elle ne capte pas le pointeur. GlowCrack n'ajoute ni rôle ni
tabindex; l'élément et son contenu gardent les leurs. - En mode
text, la copie qui porte la fissure est masquée aux lecteurs d'écran et inerte : le titre est lu une fois, sa sélection et ses liens restent ceux du vrai texte. La copie ne reprend ni lesid, ni les noms de champs, ni la lecture automatique d'un média. - Le focus clavier compte comme le survol, y compris sur un élément placé dans GlowCrack : avec
trigger: "hover", il ouvre la fissure, et, hors du modetext, il avive la lumière. Le toucher n'agit pas comme un pointeur : sur un écran tactile, seule l'apparition forme la fissure. - La lumière ne clignote pas : la respiration est lente (sous 0,4 Hz), et le seul éclat est celui de la fin d'une formation, une fois, en fondu.
- Rien ne tourne hors écran ni dans un onglet masqué.
Ce que vous devez faire
- Prévoir l'interrupteur de pause de la page (WCAG 2.2.2), sauf si la lumière est fixe : voir l'encadré de Utilisation. Le mouvement réduit du système ne le remplace pas : ce réglage ne concerne que les personnes qui l'ont activé.
- Garder le texte lisible : laissez l'évitement automatique faire son travail, ou placez la fissure à côté du texte courant. Réservez le mode
textaux grands titres en gras. - Ne pas confier une information à la fissure seule : un état ou un message doit rester visible sans elle.
Mouvement réduit. La formation devient un fondu de 0,2 s, comme la fermeture, sans révélation ni front de lumière. La lumière reste fixe : ni respiration ni dérive. Le pointeur et le focus avivent encore la lumière, en fondu, mais sans tache qui suit le curseur. La prop reducedMotion permet de forcer ce comportement ou de l'ignorer. Un changement du réglage système s'applique en direct.
Contraste élevé. En mode forced-colors, la fissure est masquée et le système dessine l'élément. Son état (data-crack) et ses rappels suivent leur cours. Elle réapparaît quand le réglage est désactivé.
Performances
- Le cœur et ses fichiers annexes pèsent environ 12 kB minifiés et compressés, sans dépendance ; 13 kB avec FrameLoop et PointerTracker, partagés avec les autres éléments d'O-UI.
- Une fois formée, la lumière ne change que des positions et des opacités, que le navigateur compose sans redessiner la page. Pendant une formation, et tant que
progressest entre 0 et 1, seule la révélation est redessinée. - La fissure est dessinée une fois, à la création, puis quand la taille de l'élément s'est stabilisée après un redimensionnement : rien n'est recalculé pendant l'animation. Le nombre de points d'une fissure est borné, quelle que soit la taille de l'élément.
- Toutes les fissures d'une page partagent une seule boucle d'animation et un seul jeu d'écouteurs de pointeur. Une fissure hors écran, en pause, figée (
breatheetdriftà 0) ou dans un onglet masqué ne fait aucun travail.
Problèmes fréquents
- La fissure n'apparaît pas. Avec
trigger: "visible", elle se forme quand le haut de l'élément dépasse 85 % de la hauteur de l'écran, ou qu'il est entièrement visible. Vérifiez aussi que l'élément a une taille, qu'il ne s'agit pas d'une<img>(enveloppez-la), quedisabledest faux et queprogressn'est pas resté à 0. - La fissure passe sous mon texte.
originouanglesont fixés, ce qui coupe l'évitement automatique. Remettez-les à"auto", ou ajustez-les aveclength. - La lumière ne bouge pas. La page a appelé
setAnimationsPaused(true), la fissure apaused, le système demande de réduire les animations, oucolorsne compte qu'une couleur (la dérive en demande deux). - En mode
text, la fissure est décalée ou absente. Le texte passe à la ligne dans un élémentdisplay: inline: passez-le eninline-blockoublock. Un texte déjà en dégradé (background-clip: text) ou transparent ne peut pas non plus porter la fissure. - Un menu déroulant placé dans GlowCrack passe sous les éléments voisins. GlowCrack crée un contexte d'empilement (
isolation: isolate). Affichez le menu dans un portail.
Notes et limites
- Le rendu utilise les masques CSS,
mix-blend-mode: plus-lighter,color-mix()etbackground-clip: text. Il demande Chrome 120, Safari 16.2 ou Firefox 113, ou une version plus récente. - GlowCrack pose
isolation: isolatesur l'élément, etposition: relatives'il est statique : un enfant enposition: absolutese place donc par rapport à lui. Il écrit aussidata-crack. Tout revient à la destruction. - La lumière reste dans l'élément et s'arrête à son bord, arrondi compris : elle ne déborde jamais sur la page.
- Au redimensionnement, la fissure suit l'élément : ses points se déplacent avec la boîte, et son ouverture suit sa taille. Une autre fissure n'est tirée que si une option de forme change, ou par
crack()avec un point. - L'évitement du texte mesure les lignes au moment où la fissure est tirée. Si des polices web sont en cours de chargement, une fissure pas encore apparue est retracée une fois qu'elles sont chargées. Si le texte change ensuite, la fissure garde son tracé.
- En mode
text, la copie suit les changements du texte. Elle reprend le style de l'élément, pas un style posé sur un enfant au survol. - Un élément sans taille ou masqué ne dessine rien. La fissure apparaît dès qu'il a une taille.