Backgrounds✨ Premium

Halftone Effect

Filtre SVG pur à deux états : dégradé lisse au repos, motif halftone par posterisation et érosion au survol — transition fluide, zéro JavaScript.

SVG FilterHoverHalftone

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

Hero plein écran — Fond interactif à texture halftone — Halftone Effect exemple 1

① Hero plein écran — Fond interactif à texture halftone

QuandUne section hero ou une landing page plein-largeur dont le fond gradient est lui-même le sujet visuel : l'utilisateur découvre l'effet en passant le curseur.
PourquoiLe dégradé couvre toute la surface disponible — le filtre halftone a l'espace nécessaire pour produire un motif lisible et spectaculaire. Le texte superposé reste ancré en dehors du filtre.
RéglagesfeComponentTransfer 6 valeurs → 3 valeurs ; feMorphology radius 1 → 5 ; dégradé 135° violet–rose–ambre (#6366f1 / #ec4899 / #f59e0b) pour maximiser la richesse des bandes posterisées.
Carte éditoriale — En-tête visuel à révélation halftone — Halftone Effect exemple 2

② Carte éditoriale — En-tête visuel à révélation halftone

QuandUn composant carte (article, projet, profil) dont l'en-tête coloré se transforme en halftone au survol, dans une grille de contenu.
PourquoiContenu dans une surface limitée, l'effet est discret au repos et percutant au survol : il distingue visuellement la carte ciblée sans agression.
RéglagesfeMorphology radius 1 → 6 pour un contraste plus marqué sur petite surface ; dégradé aux couleurs de la charte produit ; transition .3s pour une réponse plus vive.
Affiche événementielle — Texture risographie au survol — Halftone Effect exemple 3

③ Affiche événementielle — Texture risographie au survol

QuandUne grande bannière numérique pour un festival, une exposition ou un concert : l'affiche couvre toute la surface et le survol révèle un motif halftone évoquant la trame sérigraphique.
PourquoiLe registre print/sérigraphie de l'effet est exploité dans son contexte naturel — une affiche événementielle justifie la grande surface et associe le geste de survol à la « découverte » d'une texture imprimée, cohérent avec l'univers culturel et artistique.
RéglagesDégradé 160° corail–rose–violet (#f97316 / #ec4899 / #7c3aed) pour un rendu risographie ; feMorphology radius 2 → 8 pour un motif grossier et affirmé sur grande surface ; feComponentTransfer 5 valeurs → 3 valeurs.

Comment ça marche

L'effet est entièrement déclaratif — zéro JavaScript. Un élément <svg> caché hors écran définit deux <filter> nommés, et le CSS bascule entre eux au survol via filter: url(#halftone-filter) (repos) et filter: url(#halftone-filter-hover) (survol).

feComponentTransfer avec feFuncR/G/B type="discrete" quantize chaque canal couleur en marches discrètes. Au repos, 6 valeurs (0 0.2 0.4 0.6 0.8 1) posterisent légèrement le dégradé en bandes. Au survol, 3 valeurs (0 0.5 1) réduisent le spectre à trois blocs de couleur tranchés — chaque pixel snap à noir, mi-teinte ou couleur pleine.

feMorphology operator="erode" érode ensuite les zones colorées de radius pixels vers l'intérieur. Avec radius="1" au repos, l'effet est quasi invisible. Avec radius="5" au survol, l'érosion creuse des espaces entre les blocs posterisés : sur un dégradé à 135°, les bandes se réduisent en lignes ou points isolés, produisant le motif halftone visible.

La transition visuelle est portée par transition: filter .4s en CSS pur. Les deux <filter> coexistent dans le DOM, et le navigateur interpole le rendu entre l'état repos et l'état survol sans script.

Accessibilité

  • Pas de prefers-reduced-motion dans le code fourni — la transition filter .4s se déclenche au survol sans vérifier la préférence OS. Pour les projets accessibles, ajoutez @media (prefers-reduced-motion: reduce) { .halftone-content { transition: none } }.
  • Aucune animation automatique en boucle : l'effet n'est actif qu'au survol de l'utilisateur — aucun requestAnimationFrame ni timer ne tourne en arrière-plan.
  • Le code de base n'expose pas d'attribut ARIA sur le conteneur. Si le fond est purement décoratif, ajoutez aria-hidden="true" au <svg> de filtres et au .halftone-container ; s'il est sémantique, utilisez role="img" et aria-label.
  • Le contraste du texte blanc sur le dégradé violet–rose–ambre par défaut dépasse 4,5:1 sur les zones sombres (violet) mais peut descendre en dessous sur les zones claires (ambre) — vérifiez avec un outil de contraste avant de modifier la palette.
  • L'effet SVG ne crée aucune zone focusable parasite : le flux de tabulation reste intact.

Compatibilité navigateur

Nécessite SVG Filter Effects (feComponentTransfer, feMorphology) — supportés nativement dans tous les navigateurs modernes depuis 2015.

Chrome 18+✓ Complet
Firefox 35+✓ Complet
Safari 6+✓ Complet
Edge 18+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si <code>filter: url(#id)</code> n'est pas reconnu (IE11), le dégradé s'affiche sans effet halftone — aucune erreur JS, la page reste fonctionnelle.

Le code

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

index.html — structure
<svg aria-hidden="true" style="position:absolute;width:0;height:0">
  <defs>
    <filter id="halftone-filter"><!-- feComponentTransfer discrete + feMorphology erode radius="1" --></filter>
    <filter id="halftone-filter-hover"><!-- feComponentTransfer discrete + feMorphology erode radius="5" --></filter>
  </defs>
</svg>
<div class="halftone-container">
  <div class="halftone-content">
    <!-- overlay texte ou vide (gradient seul) -->
  </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
background (CSS .halftone-content) linear-gradient(135deg, #6366f1, #ec4899, #f59e0b) Couleurs et angle du dégradé de fond. Remplacez par votre palette ou par background-image: url(…) : le filtre SVG s'applique au rendu final quel que soit le type de fond.
135deg (angle du dégradé) 135deg Direction du dégradé et donc des bandes halftone : 0° = haut→bas, 90° = gauche→droite, 45° = diagonale inverse.
tableValues (feComponentTransfer — repos) "0 0.2 0.4 0.6 0.8 1" Paliers de posterisation au repos. 6 valeurs = bandes fines, effet subtil. Ajoutez des valeurs intermédiaires pour plus de finesse, réduisez pour un rendu plus graphique.
tableValues (feComponentTransfer — survol) "0 0.5 1" Paliers au survol. "0 1" = binarisation totale (noir/blanc), très fort. "0 0.33 0.67 1" = 4 blocs, plus doux. Calibrez selon l'intensité voulue.
radius (feMorphology — repos) 1 Érosion au repos en pixels. 0 non valide (utiliser 0.5+) ; 1–2 quasi invisible ; 3+ amincit les bandes dès l'état normal.
radius (feMorphology — survol) 5 Érosion au survol. 3 = halftone léger, 5–7 = bandes/points bien séparés, 10+ = quasi invisible (à éviter). Calibrez selon la taille du conteneur.
transition: filter .4s (CSS) .4s Durée et easing de la transition entre les deux états. .2s = réponse immédiate, .8s ease-in-out = morphing progressif.

FAQ

filter: url(#halftone-filter) s'applique au rendu final de l'élément, quelle que soit sa source : image <img>, background-image: url(…) ou <video>. Remplacez background: linear-gradient(…) sur .halftone-content par votre image et le filtre SVG s'applique de façon identique.
feMorphology erode avec un rayon décimal (ex. 2.5) est arrondi différemment selon les moteurs SVG. Utilisez des valeurs entières (1, 2, 3…) pour un résultat cohérent entre navigateurs. De légères variations de quantification dans feComponentTransfer sont normales et attendues.
Supprimez la règle .halftone-container:hover .halftone-content { filter: url(#halftone-filter-hover) } et faites pointer le CSS de repos vers #halftone-filter-hover, ou définissez un troisième <filter id="halftone-static"> avec les valeurs permanentes souhaitées et affectez-le à .halftone-content.