Korben Glitch Effect

L'effet de glitch sur les images de Korben.info, prêt à intégrer dans votre site.

Zéro dépendance Vanilla JS + CSS ~4 Ko Tous navigateurs modernes

Démo live

Les images ci-dessous glitchent automatiquement de façon aléatoire. Vous pouvez aussi forcer le déclenchement :

Demo 1

Glitch aléatoire sur .glitch-target

Demo 2

Durée aléatoire entre 320ms et 580ms

Demo 3

clip-path + mix-blend-mode + hue-rotate

Demo 4

Priorité aux images visibles dans le viewport

Installation

Deux fichiers à copier dans votre projet : glitch.css et glitch.js. C'est tout.

  1. Ajoutez le CSS dans votre <head> et le JS avant </body>
    html
    <head>
      <link rel="stylesheet" href="glitch.css">
    </head>
    <body>
    
      <img class="glitch-target" src="mon-image.jpg" alt="...">
    
      <script src="glitch.js"></script>
    </body>
  2. Ajoutez la classe glitch-target sur les images que vous voulez glitcher
  3. C'est tout. Le script fait le reste automatiquement.

Configuration

Tout se configure via des attributs data-* sur la balise <script> :

html
<script src="glitch.js"
  data-selector="img.glitch-target"
  data-interval-min="15000"
  data-interval-max="60000"
  data-duration-min="320"
  data-duration-max="580"
></script>
AttributDefaultDescription
data-selectorimg.glitch-targetSélecteur CSS des images à cibler
data-autofalseSi true, cible toutes les <img> de la page
data-interval-min15000Délai minimum entre deux glitchs (ms)
data-interval-max60000Délai maximum entre deux glitchs (ms)
data-duration-min320Durée minimum d'un glitch (ms)
data-duration-max580Durée maximum d'un glitch (ms)

API JavaScript

Vous pouvez aussi contrôler l'effet manuellement :

js
// Glitch une image spécifique
KorbenGlitch.glitch(document.querySelector('#monImage'));

// Wrapper une image (sans déclencher le glitch)
KorbenGlitch.wrap(document.querySelector('#monImage'));

// Relancer la boucle automatique
KorbenGlitch.start();

Comment ça marche

  1. Le script enveloppe chaque image ciblée dans un <span class="glitch-wrap">
  2. Deux pseudo-éléments ::before et ::after dupliquent l'image via la variable CSS --glitch-src
  3. Quand la classe .is-glitching est ajoutée, les pseudo-éléments s'animent :
    • clip-path inset pour ne montrer que des bandes horizontales
    • mix-blend-mode (screen / lighten) pour l'effet couleur
    • hue-rotate + saturate pour le décalage chromatique
    • translate3d pour le décalage spatial
  4. Le script choisit aléatoirement des images visibles dans le viewport
  5. Un PRNG déterministe (Mulberry32) assure la reproductibilité par session

Contenu du package

glitch.css    Les styles et animations
glitch.js     Le script (IIFE, zéro dépendance)
index.html    Cette page (démo + documentation)