Distorsion✨ Premium

Retro Handheld Screen

Une carte façon console de poche, en quatre verts : un écran qui teinte tout son contenu en vert par filtre CSS, une rangée de blocs qui respirent et une ligne de score.

CSSFilterRetro

Mis à jour le

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

3 exemples d'usage

Écran de jeu sur la page d'un jeu de plateforme en navigateur — Retro Handheld Screen exemple 1

① Écran de jeu sur la page d'un jeu de plateforme en navigateur

QuandLa page d'accueil d'un petit jeu de plateforme présente, à côté du titre et des boutons « Jouer » et « Les niveaux », la carte comme écran de jeu : niveau en cours, héros en pixels, blocs qui respirent, score.
PourquoiLa carte résume l'univers du jeu en un objet : palette, police et mouvement discret disent « jeu de poche » avant même la première partie.
Réglages--pkc-w: 226px, --pkc-screen-h: 108px, --pkc-pixel: 9px pour un sprite plus grand ; titre « NIVEAU 3 », score « SCORE: 004210 ».
Aperçu du filtre « console de poche » dans un éditeur de photos — Retro Handheld Screen exemple 2

② Aperçu du filtre « console de poche » dans un éditeur de photos

QuandDans un éditeur de photos en ligne, la photo de plage s'affiche en couleurs. Un clic sur le filtre « Console de poche » remplace l'aperçu par la carte, dont l'écran contient la même photo, teintée en vert par le filtre.
PourquoiLe filtre de l'écran agit sur n'importe quelle image : l'acheteur obtient un aperçu « rétro » sans traiter la photo, et la carte autour montre les quatre nuances de la palette.
Réglages--pkc-w: 278px, --pkc-screen-h: 150px, --pkc-block: 18px ; la photo est un <svg> posé en enfant direct de .pkc-screen. Le clic sur le filtre ne fait qu'afficher la racine (câblage de la scène).
Badge du joueur à côté d'un message de forum — Retro Handheld Screen exemple 3

③ Badge du joueur à côté d'un message de forum

QuandDans un fil de discussion consacré aux records, la colonne de l'auteur montre une version réduite de la carte : pseudo, sprite, blocs et points d'expérience. Le message suivant, d'un autre membre, a un avatar ordinaire.
PourquoiRéduite à 124 px, la carte devient un badge d'identité reconnaissable ; les blocs qui respirent attirent l'œil vers l'auteur du record sans gêner la lecture.
Réglages--pkc-w: 124px, --pkc-screen-h: 42px, --pkc-pixel: 4px, --pkc-block: 9px ; la scène réduit aussi les marges, le titre (13 px) et le score (10 px).

Comment ça marche

.pkc-card est une carte de 240 px au fond vert clair, bordée de vert très sombre. Toutes ses couleurs viennent de quatre variables, de la plus sombre à la plus claire : --pkc-0 #0f380f, --pkc-1 #306230, --pkc-2 #8bac0f, --pkc-3 #9bbc0f. Le titre (« PLAYER 1 ») et le score (« SCORE: 999999 ») sont en Courier New.

L'écran .pkc-screen (80 px de haut) porte un filter : sepia(100%) hue-rotate(50deg) saturate(400%) brightness(80%) contrast(120%). Tout ce qu'il contient prend une teinte verte : le petit sprite de 8×6 cases fourni, ou votre propre <img> ou <svg>, posé en enfant direct, qui le remplit alors. Le résultat est un camaïeu vert continu, pas une vraie réduction à quatre couleurs.

Sous l'écran, six blocs de 28 px reprennent les quatre nuances et rétrécissent à 85 % puis reviennent, en 3 s, un bloc sur deux décalé d'une demi-seconde (animation pkcPulse). Aucun JavaScript : le sprite est écrit une seule fois dans le HTML (l'ancienne version l'ajoutait une seconde fois par script, d'où un dessin doublé et coupé).

Accessibilité

  • Texte lisible : le titre et le score sont du vrai texte. Le sprite et la rangée de blocs, purement décoratifs, portent aria-hidden="true".
  • Image teintée : si vous placez une image dans l'écran, donnez-lui un alt ; le filtre ne change rien à ce qu'entend un lecteur d'écran.
  • Contraste : le titre #0f380f sur #9bbc0f atteint environ 6:1 ; le score est écrit dans la même nuance --pkc-0, au même contraste. La nuance --pkc-1 (#306230) n'atteint qu'environ 3,3:1 sur ce fond : ne l'utilisez pas pour un petit texte.
  • Réduire les animations : sous prefers-reduced-motion: reduce, les blocs ne respirent plus ; la carte reste identique, immobile.

Compatibilité navigateur

CSS seul, aucune dépendance. filter et les variables CSS existent partout depuis longtemps ; la fonction la plus récente est gap dans une boîte flex (Chrome 84, Firefox 63, Safari 14.1 d'après les données MDN). Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : un seul sprite (60 éléments par carte au lieu de 108), deux copies identiques, aucune variable ajoutée à window, largeur fluide jusqu'à 100 %.

Chrome 84+✓ Complet (mesuré)
Firefox 63+✓ Complet (mesuré)
Safari 14.1+✓ Complet (mesuré sous WebKit)
Edge 84+✓ Complet
Mobile iOS 14.5+✓ Complet
Android Chrome 84+✓ Complet

Sans gap en flex, titre, écran, blocs et score se touchent mais restent lisibles. Sans filter, l'écran garde les couleurs d'origine de son contenu.

Le code

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

index.html — structure
<div class="fx-0277-root">
  <div class="pkc-card">
    <div class="pkc-title">PLAYER 1</div>
    <div class="pkc-screen">
      <div class="pkc-sprite" aria-hidden="true">
        <span class="pkc-c0"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c3"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c3"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c2"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c1"></span>
        <span class="pkc-c0"></span>
        <span class="pkc-c0"></span>
      </div>
    </div>
    <div class="pkc-row" aria-hidden="true">
      <div class="pkc-block"></div>
      <div class="pkc-block"></div>
      <div class="pkc-block"></div>
      <div class="pkc-block"></div>
      <div class="pkc-block"></div>
      <div class="pkc-block"></div>
    </div>
    <div class="pkc-score">SCORE: 999999</div>
  </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
Les quatre nuances (CSS — --pkc-0 à --pkc-3) #0f380f, #306230, #8bac0f, #9bbc0f Remplacez-les par quatre gris ou quatre bleus : carte, sprite et blocs suivent. Gardez l'ordre du plus sombre au plus clair.
Contenu de l'écran (HTML — enfant de .pkc-screen) Sprite de 8×6 cases Un <img> ou un <svg> en enfant direct remplit l'écran (object-fit: cover) et prend la teinte verte.
Filtre de l'écran (CSS — --pkc-filter) sepia(100%) hue-rotate(50deg) saturate(400%) brightness(80%) contrast(120%) none garde les couleurs d'origine ; grayscale(1) contrast(1.4) donne un écran gris.
Tailles (CSS — --pkc-w, --pkc-screen-h) 240 px, écran de 80 px --pkc-w: 100% remplit le parent ; agrandissez l'écran pour une image.
Blocs et sprite (CSS — --pkc-block, --pkc-pixel) 28 px, 6 px Dans une petite carte, 9 px et 4 px ; vérifiez que les six blocs tiennent dans la largeur.
Textes (HTML — .pkc-title, .pkc-score) « PLAYER 1 », « SCORE: 999999 » Pseudo, niveau, nombre de points : du texte libre, lu par les lecteurs d'écran.
Cadre de démonstration (CSS — --pkc-page, --pkc-root-h) #0a0a0f, 300 px de haut au minimum transparent et 0 pour poser la carte dans votre page.

FAQ

Non. Le filtre CSS la teinte en vert avec toutes ses nuances intermédiaires ; seuls la carte, le sprite et les blocs utilisent strictement les quatre couleurs. Pour une vraie réduction à quatre couleurs, il faudrait traiter l'image (canvas ou outil graphique) avant de l'afficher.
La grille .pkc-sprite compte 8 colonnes ; chaque case est un <span> avec une classe pkc-c0 à pkc-c3 (de la plus sombre à la plus claire). Changez les classes, ajoutez des rangées de 8 cases : la grille s'adapte.
Non. Avec prefers-reduced-motion: reduce, ils restent à leur taille normale ; le reste de la carte ne bouge de toute façon jamais.