Backgrounds✨ Premium

Thermal Vision

Quatre zones thermiques CSS animent une carte de chaleur hover-réactive — du blanc incandescent au bleu glacial, sans une ligne de JavaScript.

CSSHoverGradient

Vous aurez accès à la démo interactive avec un compte gratuit.

Cet effet fait partie d'Effect.Labs — 811 effets vanilla, une partie gratuite, une partie premium. Backgrounds comprend 50 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

Dashboard monitoring — Cluster de nœuds serveur — Thermal Vision exemple 1

① Dashboard monitoring — Cluster de nœuds serveur

QuandL'opérateur consulte l'état thermique d'un cluster en temps réel depuis un panneau d'administration.
PourquoiLa palette infrarouge traduit instantanément la gravité sans légende : blanc-rouge = alerte critique, bleu = nœud au repos. Le survol déclenche un scan visuel naturel qui incite à l'exploration.
RéglagesLabellisez chaque objet (CPU, GPU, RAM, DISK) en superposant un <span> absolu. Mappez thermal-hot au nœud le plus critique et thermal-cold à la ressource idle.
Widget domotique — Températures par pièce — Thermal Vision exemple 2

② Widget domotique — Températures par pièce

QuandLe tableau de bord d'une app domotique affiche les capteurs de température de chaque pièce du logement.
PourquoiChaque zone thermique représente une pièce (salon chaud, chambre fraîche, cave froide) — l'utilisateur comprend l'ambiance d'un coup d'œil, sans lire un seul chiffre.
RéglagesArrangez les 4 objets en grille 2×2 (display: grid; grid-template-columns: 1fr 1fr; gap: 24px), montez à 70×70 px, ajoutez un label texte sous chaque objet.
Hero section — Scanner infrarouge sci-fi — Thermal Vision exemple 3

③ Hero section — Scanner infrarouge sci-fi

QuandLanding page d'une startup deeptech ou d'un outil de cybersécurité qui veut une esthétique technique et immersive dès le premier écran.
PourquoiL'interaction hover crée un moment d'agentivité — l'utilisateur déclenche lui-même le scan thermique. La transition 0,5 s paraît à la fois réactive et précise.
RéglagesObjets en 90×90 px, gap: 32px, background: #000 sur .thermal-scene, blur(20px) sur ::after pour un rayonnement plus dramatique.

Comment ça marche

L'effet est 100 % CSS pur — zéro JavaScript. Quatre <div> portent chacun une classe de température (thermal-hot, thermal-warm, thermal-cool, thermal-cold) avec un dégradé radial qui imite la palette infrarouge : blanc au cœur brûlant, jaune-orange en périphérie chaude, puis bleu-cyan pour le frais et bleu-nuit pour le froid.

Chaque objet possède un pseudo-élément ::after en position: absolute; inset: -8px, héritant du même dégradé et filtré par filter: blur(12px). Ce halo flou simule la diffusion thermique de l'imagerie infrarouge — le rayonnement déborde du corps de l'objet, exactement comme en physique réelle.

Au survol du container (.thermal-container:hover), les zones chaudes s'agrandissent (scale(1.3) pour hot, scale(1.15) pour warm) et accumulent un box-shadow coloré simulant l'émission énergétique. Les zones froides rétrécissent (scale(0.9) et scale(0.8)) avec un halo bleuté moins intense — une cohérence physique obtenue en CSS pur.

Toutes les transitions sont pilotées par une seule déclaration transition: .5s sur .thermal-object et .thermal-object::after, couvrant simultanément transform, box-shadow, opacity et inset. Le label de statut (.thermal-label) suit une transition sur sa color, passant de 40 % à 80 % d'opacité.

Accessibilité

  • prefers-reduced-motion absent : l'effet ne détecte pas cette préférence — les transitions 0,5 s s'exécutent toujours. Pour la conformité WCAG 2.1 §2.3, ajoutez @media (prefers-reduced-motion: reduce) { .thermal-object, .thermal-object::after, .thermal-label { transition: none; } }.
  • Interaction hover-only : aucun état :focus ne déclenche l'effet — les utilisateurs clavier ne peuvent pas l'activer. Correctif minimal : ajouter tabindex="0" sur .thermal-container et étendre les sélecteurs en :hover, :focus-within.
  • Les quatre zones sont différenciées par couleur uniquement — aucun motif ni texte alternatif. En cas d'usage fonctionnel (alerte, seuil), ajoutez un aria-label ou un label texte visible par zone pour les utilisateurs daltoniens.
  • Le .thermal-label (« hover to activate thermal scan ») est en opacité 40 % au repos — ratio de contraste inférieur à 4,5:1 WCAG AA. Il dépasse le seuil en état hover (80 %), mais l'état initial n'est pas conforme.
  • Aucun rôle ARIA sur les éléments de l'effet. Le container peut recevoir role="img" et aria-label pour décrire la scène aux lecteurs d'écran.

Compatibilité navigateur

Nécessite les dégradés CSS, filter: blur(), transform et les transitions CSS — supportés dans tous les navigateurs modernes depuis 2016.

Chrome 40+✓ Complet
Firefox 35+✓ Complet
Safari 9+✓ Complet
Edge 79+✓ Complet
Mobile iOS✓ Complet (hover simulé au touch)
Android Chrome✓ Complet (hover simulé au touch)

Sans <code>filter: blur()</code> (IE 11), les halos disparaissent mais les dégradés thermiques restent visibles — l'effet reste lisible, seulement moins immersif. Aucune erreur JS.

Le code

Structure HTML à coller dans votre page (CSS + JS disponibles avec un compte premium) :

index.html — structure
<div class="thermal-container">
  <div class="thermal-scene">
    <div class="thermal-object thermal-hot"></div>
    <div class="thermal-object thermal-warm"></div>
    <div class="thermal-object thermal-cool"></div>
    <div class="thermal-object thermal-cold"></div>
    <div class="thermal-label">hover to activate thermal scan</div>
  </div>
</div>
🔒 Débloquer le code complet — à partir de 2,99 € le 1er mois

HTML + CSS + JS complet, prêt à coller — avec des centaines d'effets premium.

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
.thermal-hot { background } radial-gradient(circle, #fff, #ff0, #f80, red) Stops du dégradé de la zone la plus chaude. Modifiez les couleurs pour adapter la plage (ex. commencer au jaune si le blanc est trop intense, ou inverser pour une logique froide/chaude).
.thermal-object { width / height } 60px Taille des zones. Montez à 90-120 px pour un hero plein écran, descendez à 40 px pour un widget compact ou une grille dense.
.thermal-object::after { filter: blur() } blur(12px) Rayon de diffusion thermique. Augmentez à 24-32 px pour un rayonnement diffus sur grand fond sombre, réduisez à 6 px pour un contour resserré.
.thermal-container:hover .thermal-hot { transform } scale(1.3) Dilatation de la zone hot au survol. Réduisez à scale(1.15) pour un comportement discret ; montez à scale(1.5) pour un effet dramatique.
.thermal-object { transition } 0.5s Durée des transitions. Ralentissez à 1,2 s pour un scan cinématique, accélérez à 0,15 s pour une réponse quasi-instantanée.
.thermal-scene { background } #0a0020 Fond de la scène. Utilisez #000 pour un noir infrarouge pur ou #0a0a0f pour s'intégrer au dark standard Effect.Labs.
.thermal-scene { gap } 16px Espacement entre les zones. Montez à 32-48 px pour aérer la composition, réduisez à 8 px pour un cluster compact.

FAQ

Oui, l'effet est 100 % CSS — aucun script requis. Copiez le HTML et le CSS, c'est tout. Il n'a aucune dépendance externe et s'intègre dans n'importe quel framework (React, Vue, Svelte) comme composant statique ou en injectant les classes dynamiquement.
Ajoutez tabindex="0" sur .thermal-container et étendez tous les sélecteurs .thermal-container:hover en .thermal-container:hover, .thermal-container:focus-within. L'utilisateur active le scan thermique avec Tab seul — :focus-within suffit, pas besoin d'Entrée.
L'effet natif repose sur :hover — pas de keyframes CSS. Pour une boucle automatique, ajoutez des @keyframes sur transform et box-shadow pour chaque classe, ou déclenchez l'état hover en JavaScript en basculant une classe .active sur .thermal-container.