Utilitaires✨ Premium

Neon Border Pulse

Filet néon vert dont la lueur respire toutes les deux secondes, puis s'emballe et blanchit quand on survole, cible au clavier ou touche la boîte.

CSSNeonGlow

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Utilitaires comprend 43 effets, dont 3 gratuits. Découvrir la catégorie →

3 exemples d'usage

Carte des cocktails d'un bar de nuit — Neon Border Pulse exemple 1

① Carte des cocktails d'un bar de nuit

QuandSur l'accueil du bar Le Mirquelle, la liste des quatre créations de la semaine est posée dans un grand cadre néon qui respire en permanence ; quand la souris passe dessus, il s'embrase.
PourquoiLe néon évoque l'enseigne du bar sans image ni vidéo : un filet et des ombres suffisent, et le texte de la carte reste du vrai texte, lisible et traduisible.
Réglages--nbp-w: 252px; --nbp-h: 258px; --nbp-radius: 14px ; teinte par défaut ; la boîte passe en display: block pour accueillir la liste.
Voyant REC d'un studio de podcast en ligne — Neon Border Pulse exemple 2

② Voyant REC d'un studio de podcast en ligne

QuandDans l'outil Sonavrette, l'étiquette « REC » n'apparaît qu'après un clic sur « Enregistrer » et respire à côté du chronomètre tant que l'enregistrement tourne.
PourquoiUn petit filet qui pulse se repère du coin de l'œil sans gêner le travail sur les pistes ; passé en rouge, il reprend le code couleur habituel de l'enregistrement.
Réglages--nbp-rgb: 255, 64, 96; --nbp-peak: #ff8a9e; --nbp-w: 66px; --nbp-h: 30px; --nbp-radius: 8px ; l'étiquette porte role="status". Pour la capture, la scène démarre l'enregistrement seule au chargement.
Cases jouables d'un jeu de plateau — Neon Border Pulse exemple 3

③ Cases jouables d'un jeu de plateau

QuandSur le plateau de Trivelmonde, seules les trois cases encore jouables portent le néon ; celle que le joueur survole ou atteint au clavier passe en pulsation intense, et un clic y pose son pion.
PourquoiLa respiration lente désigne les coups possibles, la pulsation rapide confirme la case visée : deux niveaux d'information avec un seul effet. Chaque case contient un vrai bouton, donc le clavier joue comme la souris.
Réglages--nbp-w: 70px; --nbp-h: 70px; --nbp-radius: 10px ; un <button class="nbp-link"> remplace le lien dans chaque case (fond, bordure et police remis à zéro par le CSS de la scène, que le CSS de l'effet ne fait pas) ; la scène retire la racine de la case jouée.

Comment ça marche

La boîte .nbp-box (200 × 120 px, arrondi 12 px) porte un filet plein de 2 px couleur #00ff88. Tout l'éclat vient de box-shadow : la règle empile plusieurs halos extérieurs flous et un halo intérieur (inset), sans aucun pseudo-élément ni JavaScript.

Au repos, l'animation nbpPulse (2 s, aller-retour adouci, en boucle) fait passer le halo de 5 px à trois couches de 15, 30 et 60 px, pendant que le filet glisse vers un vert d'eau #00ffcc. Au survol, l'animation est remplacée par nbpPulseIntense, deux fois plus rapide : le filet devient blanc au sommet de chaque battement et la lueur s'étale jusqu'à 120 px.

Le libellé est un vrai lien, .nbp-link, dont le pseudo-élément ::after recouvre toute la boîte : un clic n'importe où suit le lien. La boîte réagit à :hover et à :focus-within, donc aussi quand ce lien (ou tout autre lien, bouton ou champ placé dedans) reçoit le focus. Sans élément interactif à l'intérieur, la boîte reste un décor qui respire seul.

La teinte est donnée en trois nombres (--nbp-rgb: 0, 255, 136) parce que les halos la reprennent à différentes opacités avec rgba() : changer cette seule variable recolore le filet et toutes les lueurs.

Accessibilité

  • Clavier : Tab atteint le lien de la boîte ; la pulsation intense démarre et un contour blanc (--nbp-ring) entoure la boîte, à quelques pixels du filet, quand le focus vient du clavier. Dans Safari, Tab ne s'arrête sur les liens que si l'option clavier du navigateur est cochée (Option+Tab sinon) : réglage de Safari, pas de l'effet.
  • Toucher : un doigt posé sur le lien déclenche la pulsation intense dans Chromium, Firefox et WebKit (mesuré avec écran tactile simulé, y compris WebKit où une simple boîte sans lien ne réagit pas).
  • Mouvement réduit : avec prefers-reduced-motion: reduce, plus aucune respiration ; le filet garde une lueur fixe (10 et 30 px), et le survol ou le focus le passe en blanc avec un halo plus large, sans clignoter.
  • Rien que du décor : la lueur n'encode aucune information. Si elle signale un état (enregistrement en cours, case jouable), écrivez cet état en texte dans la boîte, comme « REC » dans l'exemple du studio.
  • Clignotement : la version intense bat une fois par seconde, loin du seuil de trois éclairs par seconde des WCAG ; si vous raccourcissez --nbp-speed-hover, restez au-dessus de 0,4 s.

Compatibilité navigateur

CSS seul, aucun JavaScript. Mesuré dans Chromium 151, Firefox 153 et le WebKit 26.5 de Playwright : 0 erreur, deux copies indépendantes sur une même page, survol, Tab, toucher, 390 px et mouvement réduit (plus aucune animation infinie). Versions minimales d'après @mdn/browser-compat-data : la propriété inset du lien étiré fixe le plancher (Chrome 87, Firefox 66, Safari 14.1).

Chrome 87+✓ Complet (mesuré dans la version 151)
Firefox 66+✓ Complet (mesuré dans la version 153)
Safari 14.1+✓ Complet ; Tab sur le lien selon le réglage clavier de Safari (mesuré dans WebKit)
Edge 87+✓ Complet (moteur Chromium)
Safari iOS 14.5+✓ Complet, pulsation intense au toucher du lien (mesuré dans WebKit tactile)
Chrome Android 87+✓ Complet (moteur Chromium)

Avant :focus-visible (Chrome 86, Firefox 85, Safari 15.4), le contour blanc n'apparaît pas, mais la pulsation intense démarre quand même au focus. Sans inset, écrivez top:0; right:0; bottom:0; left:0 sur .nbp-link::after.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0767-root">
  <div class="nbp-box">
    <a class="nbp-link" href="#neon-pulse">Neon Pulse</a>
  </div>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

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

Option / propriétéDéfautEffet
--nbp-rgb 0, 255, 136 Couleur du néon en trois nombres R, G, B : filet et halos changent ensemble.
--nbp-peak et --nbp-hot #0fc et #fff Teinte du filet au sommet d'une respiration, puis au sommet d'une pulsation intense.
--nbp-speed 2s Durée d'une respiration au repos.
--nbp-speed-hover 1s Durée d'un battement au survol, au focus et au toucher.
--nbp-w, --nbp-h, --nbp-radius 200px, 120px, 12px Taille et arrondi de la boîte ; la largeur ne dépasse jamais celle du conteneur.
--nbp-fill #0a0a0f Fond de la boîte. Le néon ressort sur un fond sombre ; sur fond clair, les halos verts deviennent presque invisibles.
--nbp-ring #fff Couleur du contour de focus clavier.

FAQ

Gardez le lien .nbp-link et donnez-lui votre adresse ; mettez le reste du contenu (titre, texte) dans la boîte à côté de lui. Son ::after couvre toute la boîte, donc tout le cadre est cliquable, et le focus clavier sur ce lien allume la pulsation. Pour un cadre purement décoratif, supprimez le lien : la respiration continue, sans curseur de main.
Animer box-shadow oblige le navigateur à repeindre le halo à chaque image. Pour un ou quelques cadres, c'est sans conséquence ; pour une grille de dizaines de boîtes qui pulsent en même temps, préférez réserver le néon aux éléments qui comptent, comme les trois cases jouables de l'exemple.
Oui : changez --nbp-rgb (par exemple 255, 64, 96 pour un rouge, 56, 189, 248 pour un bleu ciel) et accordez --nbp-peak à une version plus claire de la même teinte. Le blanc de --nbp-hot va avec toutes les couleurs.