Backgrounds✨ Premium

Color Mix Crossfade

Trois blocs CSS comparent en direct les chemins de mélange color-mix() en oklch et en sRGB — zéro JavaScript.

CSScolor-mix()OKLCH

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

Outil design — Comparateur de mélange dans un sélecteur de palette — Color Mix Crossfade exemple 1

① Outil design — Comparateur de mélange dans un sélecteur de palette

QuandUn outil de design ou une interface de design system affiche en temps réel la couleur résultante entre deux teintes choisies par l'utilisateur.
PourquoiLa comparaison oklch / sRGB intégrée au composant explique visuellement pourquoi oklch produit une couleur plus saturée — argument pédagogique sans texte ajouté.
RéglagesBloc A : couleur primaire brand en oklch ; bloc B : couleur secondaire ; bloc mix élargi à 100 px au repos pour accentuer le résultat visible.
Article documentation — Démonstration live de color-mix() — Color Mix Crossfade exemple 2

② Article documentation — Démonstration live de color-mix()

QuandUne page de référence CSS ou un article de blog technique explique <code>color-mix()</code> et veut une démo interactive inline sans framework.
PourquoiL'effet est auto-explicatif : le survol change l'espace de mélange et la différence saute aux yeux — plus parlant que n'importe quel exemple statique.
RéglagesAdapter le texte de .crossfade-info au contexte (ex. hover: oklch → lab) ; ajuster les couleurs aux exemples traités dans l'article.
Module e-learning CSS — Exercice interactif sur les espaces de mélange — Color Mix Crossfade exemple 3

③ Module e-learning CSS — Exercice interactif sur les espaces de mélange

QuandUn cours CSS avancé ou un atelier propose un exercice où l'apprenant survole les blocs et observe comment le point médian change selon l'espace de mélange choisi.
PourquoiLa structure des trois blocs côte à côte est l'exercice lui-même : comparer oklch et sRGB en direct est l'objectif pédagogique — le seul contexte où montrer les trois colonnes simultanément répond à un besoin réel.
RéglagesValeurs oklch(.65 .28 30) / oklch(.6 .25 260) tirées du code de l'effet ; transition 1 s sur `.block-mix` et 1,2 s sur `.block-a/.block-b` laissent l'apprenant suivre visuellement le changement ; adapter `.crossfade-info` à l'instruction du cours.

Comment ça marche

La fonction CSS color-mix() prend deux couleurs et un espace colorimétrique, puis retourne la couleur au point médian du trajet entre elles dans cet espace. L'effet pose deux instances côte à côte : le bloc central affiche color-mix(in oklch, …) au repos, et bascule sur color-mix(in srgb, …) au survol — via un sélecteur :hover seul, sans JavaScript.

La différence visuelle vient de la géométrie des espaces : oklch est perceptuellement uniforme (L = luminosité constante, C = chroma, H = teinte), donc le point médian entre un rouge-orange oklch(.65 .28 30) et un bleu-violet oklch(.6 .25 260) produit un violet saturé. sRGB interpole linéairement ses canaux R, G, B bruts — le trajet traverse le centre du cube RGB, ce qui désature le résultat vers un gris terne.

Au survol du .crossfade-container, trois changements se déclenchent simultanément : les blocs A et B s'écartent de 20 px via transform: translateX(±20px), le bloc mix s'élargit de 60 px à 120 px, et son background passe de la version oklch à la version sRGB. Tout est piloté par les transition déclarées sur chaque bloc (1,2 s pour A et B, 1 s pour le mix). L'espace de mélange affiché au repos est indiqué par le .crossfade-info qui monte en opacité au survol.

Accessibilité

  • ⚠️ prefers-reduced-motion absent : les transitions (1,2 s et 1 s) s'exécutent quelle que soit la préférence système. Ajoutez @media (prefers-reduced-motion: reduce) { .crossfade-block { transition: none } } avant de déployer en production.
  • L'interaction est déclenchée par :hover uniquement — les utilisateurs au clavier ne peuvent pas déclencher la comparaison sans script supplémentaire.
  • .crossfade-info est un <span> dans le flux du DOM — son texte est lu par les lecteurs d'écran.
  • Aucun role ni aria-label sur les blocs colorés — ils sont purement décoratifs dans la démo originale.
  • Contraste de .crossfade-info : blanc à 60 % d'opacité sur fond #0f0f1a — ratio inférieur au seuil WCAG AA pour le texte de petite taille (objectif 4,5:1 non atteint).

Compatibilité navigateur

Nécessite color-mix() et oklch() — disponibles dans tous les navigateurs modernes depuis début 2023.

Chrome 111+✓ Complet
Firefox 113+✓ Complet
Safari 16.2+✓ Complet
Edge 111+✓ Complet
Mobile iOS 16.2+✓ Complet
Android Chrome 111+✓ Complet

Sans support <code>color-mix()</code> ou <code>oklch()</code>, le bloc mix s'affiche sans fond (transparent) ; les blocs A et B peuvent aussi perdre leur couleur. Aucune erreur JS — la dégradation est silencieuse.

Le code

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

index.html — structure
<div class="demo-preview">
  <div class="chroma-demo crossfade-container">
    <div class="crossfade-blocks">
      <div class="crossfade-block block-a"></div>
      <div class="crossfade-block block-mix"></div>
      <div class="crossfade-block block-b"></div>
    </div>
    <span class="crossfade-info">hover: oklch → srgb blend path</span>
  </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
.block-a { background } oklch(.65 .28 30) Première couleur source. Accepte tout format CSS valide : hex, rgb, hsl, oklch.
.block-b { background } oklch(.6 .25 260) Deuxième couleur source. Garder les deux dans le même espace (oklch + oklch) donne les résultats les plus prévisibles.
color-mix(in oklch, …) — repos oklch Espace de mélange affiché au repos. Remplacez par lch, lab ou hsl pour une autre comparaison de départ.
color-mix(in srgb, …) — survol srgb Espace de mélange révélé au survol. La paire oklch / sRGB montre le contraste le plus saisissant ; essayez oklch / hsl pour une autre perspective.
.crossfade-block { transition } 1.2s Durée de la translation des blocs A et B. Réduisez à 0,4 s pour une réponse vive, augmentez à 2 s pour un fondu lent.
.block-mix { width } / hover 120px 60px / 120px Largeur du bloc mix au repos et au survol. Augmentez la valeur hover pour accentuer le résultat ; réduisez les deux pour des blocs plus compacts.
.crossfade-info (texte) "hover: oklch → srgb blend path" Texte descriptif sous les blocs. Modifiez-le pour refléter les espaces de mélange que vous comparez.

FAQ

Chrome 111+ et Edge 111+ (mars 2023), Firefox 113+ (mai 2023), Safari 16.2+ (mars 2023). La couverture mondiale dépasse 90 % fin 2024. Pour les anciens navigateurs, ajoutez un fallback background: #hex juste avant la règle color-mix() — les navigateurs qui ne reconnaissent pas la valeur appliquent la précédente.
Remplacez les valeurs codées en dur par des propriétés CSS custom : background: var(--color-a) et color-mix(in oklch, var(--color-a), var(--color-b)). Mettez à jour ces variables depuis JavaScript : el.style.setProperty('--color-a', newColor). color-mix() recalcule le résultat immédiatement.
Oui — ajoutez des blocs supplémentaires avec d'autres espaces (color-mix(in lab, …), color-mix(in hsl, …)) et révélez-les sur d'autres états : :focus-within, une classe JS activée au clic, ou des sélecteurs :hover en cascade. La structure CSS est identique pour chaque bloc ajouté.