> ALIAS : LE GRIS
> ALIBI : NON VÉRIFIÉ
> DERNIÈRE VUE : 23 H 10_
Un moniteur cathodique en pur CSS : texte vert phosphore sur fond noir, lignes de balayage, coins assombris, et un léger faiblissement des lignes toutes les 4 secondes.
Mis à jour le
Cet effet est gratuit — la catégorie Distorsion en contient 31 au total, dont 5 gratuits. Effect.Labs regroupe 840 effets vanilla. Découvrir la catégorie →
Cliquez pour commencer, attendez le vert, puis cliquez le plus vite possible.
Serveurs en France, sauvegarde chaque nuit, un humain au téléphone.
.crtm-monitor dessine l'écran : fond #0a0a0a, cadre gris de 8 px aux coins arrondis, 280 px de large par défaut, et une lueur verte intérieure (box-shadow: inset). Le texte de .crtm-content s'affiche en Courier New, vert #33ff33, avec un text-shadow de 8 px qui imite la rémanence du phosphore.
Deux pseudo-éléments couvrent l'écran sans capter la souris : ::before trace des lignes de balayage (2 px transparents, 2 px de noir à 15 %), ::after assombrit les bords par un dégradé radial (transparent jusqu'à 60 %, puis noir à 50 %). Ce vignettage donne l'impression d'un tube bombé ; l'image n'est pas réellement courbée.
Chaque <span> du texte suit l'animation crtmFlicker de 4 s : rien pendant 92 % du temps, puis l'opacité descend à 0,7, remonte, redescend à 0,8 et revient à 1. Les lignes sont du vrai texte, à remplacer librement. Aucun JavaScript ; les réglages passent par des variables CSS.
#33ff33 sur #0a0a0a, rapport d'environ 14:1, largement au-dessus du seuil AA. Le vignettage assombrit seulement les coins.prefers-reduced-motion: reduce, le faiblissement périodique est coupé ; le texte reste affiché en continu.aria-live="polite" sur le moniteur pour que le changement soit annoncé.CSS seul, aucune dépendance. Dégradés, box-shadow intérieure, animations et variables CSS existent partout depuis longtemps ; la propriété la plus récente est prefers-reduced-motion (Chrome 74, Firefox 63, Safari 10.1, d'après les données MDN). Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : rendu identique, deux copies indépendantes, largeur fluide jusqu'à 100 %.
Dans un navigateur sans prefers-reduced-motion, le faiblissement joue toujours, sans autre conséquence. Sans variables CSS (navigateurs très anciens), les réglages sont ignorés et le moniteur garde ses valeurs par défaut.
Copiez les deux blocs (HTML et CSS) dans votre page. Aucun JavaScript, aucune dépendance.
<div class="fx-0271-root">
<div class="crtm-monitor">
<div class="crtm-content">
<span>> SYSTEM BOOT OK</span><br>
<span>> LOADING DATA...</span><br>
<span>> READY_</span>
</div>
</div>
</div>
.fx-0271-root,.fx-0271-root *,.fx-0271-root *::before,.fx-0271-root *::after{box-sizing:border-box}
/* Settings (all optional, set them on .fx-0271-root or a parent):
--crtm-w monitor width (280px; 100% fills the parent)
--crtm-color phosphor color of the text (#33ff33)
--crtm-glow text glow (rgba(51,255,51,.6))
--crtm-size text size (14px)
--crtm-frame frame color (#2a2a2a)
--crtm-page / --crtm-root-h wrapper background and min height (rgb(10,10,15) / 280px) */
.fx-0271-root{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--crtm-root-h,280px);position:relative;background:var(--crtm-page,rgb(10,10,15));color:#fff;font-family:sans-serif}
.crtm-monitor{background:#0a0a0a;border:8px solid var(--crtm-frame,#2a2a2a);border-radius:20px;padding:24px;position:relative;overflow:hidden;width:var(--crtm-w,280px);max-width:100%;min-height:160px;box-shadow:inset 0 0 60px rgba(0,255,0,.1),0 0 20px rgba(0,0,0,.5)}
/* scanlines */
.crtm-monitor::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.15) 2px,rgba(0,0,0,.15) 4px);pointer-events:none;z-index:2}
/* vignetting */
.crtm-monitor::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.5) 100%);pointer-events:none;z-index:3}
.crtm-content{color:var(--crtm-color,#33ff33);font-family:"Courier New",monospace;font-size:var(--crtm-size,14px);line-height:1.6;text-shadow:0 0 8px var(--crtm-glow,rgba(51,255,51,.6));position:relative;z-index:1}
/* every 4s the lines dim briefly, like an old tube */
.crtm-content span{animation:crtmFlicker 4s infinite}
@keyframes crtmFlicker{0%,to{opacity:1}92%{opacity:1}93%{opacity:.7}94%{opacity:1}96%{opacity:.8}97%{opacity:1}}
@media (prefers-reduced-motion:reduce){
.crtm-content span{animation:none}
}
CSS pur — aucun JavaScript requis.
Options passées à l'API ou attributs data-* :
| Option / propriété | Défaut | Effet |
|---|---|---|
Largeur (CSS — --crtm-w) |
280 px | 100% remplit le parent ; le moniteur ne dépasse jamais son conteneur (max-width: 100%). |
Couleur du texte (CSS — --crtm-color) |
#33ff33 |
Ambre #ffb000 pour un terminal orangé, blanc bleuté #d8ecff pour un écran plus froid. Pensez à accorder --crtm-glow. |
Lueur (CSS — --crtm-glow) |
rgba(51, 255, 51, .6) |
Couleur du halo de 8 px autour des lettres ; transparent donne un texte net, sans rémanence. |
Taille du texte (CSS — --crtm-size) |
14 px | 11 px pour un petit widget, 18 px et plus pour un écran de titre. L'interligne reste à 1,6. |
Couleur du cadre (CSS — --crtm-frame) |
#2a2a2a |
Beige #cfc6b0 pour un boîtier d'ordinateur ancien, ou la couleur de votre interface pour fondre le moniteur dans la page. |
Lignes de texte (HTML — les <span> de .crtm-content) |
3 lignes, séparées par <br> |
Ajoutez ou retirez des lignes ; chaque span faiblit en même temps que les autres. |
Cadre de démonstration (CSS — --crtm-page, --crtm-root-h) |
rgb(10, 10, 15), 280 px de haut au minimum |
transparent et 0 pour poser le moniteur dans votre page sans bande sombre autour. |
Non. L'impression de courbure vient du vignettage (bords assombris par un dégradé radial) et des coins arrondis. Le texte n'est pas déformé, ce qui le garde parfaitement lisible.
Remplacez le contenu d'un <span> par script (span.textContent = '> SCORE : 247'). Ajoutez aria-live="polite" sur .crtm-monitor pour que les lecteurs d'écran annoncent la nouvelle valeur.
Il est bref et faible (opacité 0,7 au plus bas), loin d'un clignotement. Il s'arrête de lui-même quand le visiteur a demandé moins d'animations, et vous pouvez le couper partout en retirant la règle animation de .crtm-content span.