Les effets qui demandent une surface de dessin. Tout est en WebGL et canvas 2D natifs : aucune bibliotheque, aucun CDN — Three.js ferait 600 Ko pour ce qui tient ici en soixante lignes. Quatre regles : l'effet est decoratif et se pose derriere le contenu, le rendu s'arrete des que le bloc sort du champ, prefers-reduced-motion fige l'image sur une frame, et si quoi que ce soit echoue le canvas est retire pour laisser le fond CSS du conteneur.
A. Fonds generatifs
Degrade fluide en WebGL, champ de points reactif, nuee de particules, ondes de bruit. Ce qui remplace aujourd'hui la boucle video de 4 Mo.
Votre facture de chauffage divisee par troisEtude thermique offerte, aides deduites du devis
Degrade fluide en WebGL
Une banniere dont le fond bouge lentement, sans video ni image. Le shader tient en trente lignes et pese zero octet de plus que le script : c'est ce qui remplace aujourd'hui la boucle video de 4 Mo.
Voir le codeMasquer le code
<div class="cv" data-cv="fluide">
<canvas aria-hidden="true"></canvas>
<div class="cv__contenu">
<strong>Votre facture de chauffage divisee par trois</strong>
<span>Etude thermique offerte, aides deduites du devis</span>
</div>
</div>
Revelation au curseur, trainee, texte en trame, et le fond fige de secours.
Avant
Apres
Revelation au curseur
Deux versions d'une meme image, la seconde revelee dans un disque qui suit le curseur. Sert a montrer un avant / apres sans bouton ni curseur a faire glisser.
clip-path: circle(120px at var(--x) var(--y)) pilote au pointermove
Deplacez le curseurLa trainee s'efface en une seconde
Trainee du curseur
Un trait qui suit le pointeur avec du retard. Signature de site vitrine ; sur un outil de travail, il devient vite fatigant.
Voir le codeMasquer le code
<div class="cv cv--clair" data-cv="trainee">
<canvas aria-hidden="true"></canvas>
<div class="cv__contenu cv__contenu--sombre">
<strong>Deplacez le curseur</strong>
<span>La trainee s'efface en une seconde</span>
</div>
</div>
/* aucun style specifique : le socle .btn suffit */
canvas 2D : file des 24 dernieres positions, epaisseur decroissante
RENOVATION
Texte en trame
Un titre rendu en points plutot qu'en lettres pleines. Le texte reste dans le balisage pour la lecture et le referencement ; la trame n'est qu'un calque decoratif par-dessus.
canvas 2D : le texte est dessine hors ecran, puis echantillonne en grille
Le contenu reste toujours completAucun texte, aucune action ne depend du canvas
Fond fige de secours
Ce que voit l'utilisateur si le canvas ne demarre pas : WebGL indisponible, script bloque, ou mouvement reduit demande. Un degrade fixe, jamais un rectangle vide.
Voir le codeMasquer le code
<div class="cv cv--repli">
<div class="cv__contenu">
<strong>Le contenu reste toujours complet</strong>
<span>Aucun texte, aucune action ne depend du canvas</span>
</div>
</div>
.cv--repli {
background-color: #141a26;
background-image:
radial-gradient(at 16% 20%, #2f4a7a 0px, transparent 50%),
radial-gradient(at 84% 26%, #6b3a5a 0px, transparent 46%),
radial-gradient(at 62% 84%, #7a4a2f 0px, transparent 48%);
}
/* Tous les blocs .cv portent ce fond de repli : si le canvas ne se dessine
pas, on obtient une banniere correcte plutot qu'un aplat noir. */
.cv {
background-image:
radial-gradient(at 16% 20%, #22354f 0px, transparent 52%),
radial-gradient(at 84% 30%, #3d2a44 0px, transparent 48%);
}
.cv--clair { background-image: none; }
le fond du conteneur est peint en CSS, le canvas se superpose s'il demarre