Le cœur d'EVA CSS

Le fluide scale
là où les breakpoints sautent.

Un seul clamp() remplace trois media queries. Les designs coulent. Les layouts respirent. Faites glisser les sliders ci-dessous.

La révélation clamp()

Faites glisser le slider. Le simulateur de viewport se rétrécit. Le contenu intérieur se redimensionne en douceur — pas de breakpoints, pas de sauts.

1200px

Aperçu en direct

Titre responsive

Padding, gap, typo et bouton — tous pilotés par une seule formule clamp(). Lisse sur tous les viewports.

h3 font-size 42px
p font-size 16px
gap 12px
padding 28px
button font-size 14px
button padding 12px

Breakpoint vs fluide

Même composant, deux stratégies. Un seul slider pilote les deux. Regardez la gauche sauter. Regardez la droite glisser.

@media breakpoints
900px

Carte breakpoint

Saute à 768 / 1024 / 1440

font-size 16px
clamp() fluide
900px

Carte fluide

Continu entre 320 et 1920

font-size 16px

Quatre modifiers de taille

Un token, quatre comportements de scaling. --220 standard. --220_ reduced. --220__ extreme. --220- extended.

1200px
var(--220) 220px
var(--220_) 220px
var(--220__) 220px
var(--220-) 220px

La configuration canonique

Un seul @use. Les tailles que vous utilisez vraiment. EVA génère le reste.

Entrée SCSS
@use 'eva-css-fluid' with (
  $sizes: (4, 8, 16, 32, 64, 128),
  $font-sizes: (14, 16, 24, 36, 52),
  $build-class: true
);
Variables générées
--16:  clamp(...);
--16_: clamp(...); /* réduit */
--16__: clamp(...); /* extrême */
--16-: clamp(...); /* étendu */
--fs-24, --fs-24_, --fs-24__
Utiliser n'importe où
.card {
  padding: var(--32);
  gap: var(--16);
  font-size: var(--fs-16);
}
Nouveau dans la v2.2.0

Une seule feuille, deux modes de fluidité

Les tokens EVA peuvent désormais suivre soit la fenêtre (vw, par défaut), soit n'importe quel conteneur (cqi) — on bascule un sous-arbre à la volée, sans rebuild ni second fichier. La courbe fluide d'EVA est inchangée : rendu identique aux versions précédentes par défaut.

Unité fluide runtime

Chaque token passe désormais par une custom property commutable au lieu d'une unité figée au build.

.card {
  container-type: inline-size;
  --eva-fluid-unit: 1cqi;
}
/* les tokens de cette card suivent sa propre largeur, pas la fenêtre */
Utilitaires conteneur (opt-in)

.eva-cqi et .eva-root posent container-type et l'override cqi d'un coup, sans risque de les oublier.

<div class="eva-cqi">...</div>
<div class="eva-root">...</div>
Garde-fou lisibilité

$min-font-size (défaut 0 = off) empêche le texte fluide de descendre sous un seuil lisible dans un petit conteneur ou sur mobile. Ce plancher est la taille mobile, pas la taille desktop — 13-14px est une valeur recommandée.

@use 'eva-css-fluid' with (
  $min-font-size: 14
);
Config, dans les deux sens — SCSS ou JSON
@use 'eva-css-fluid' with (
  $sizes: (4, 8, 16, 24, 48),
  $font-sizes: (16, 24, 48),
  $unit-fluid: 1vw,       // unité fluide + fallback : 1vw | 1cqi
  $reference-width: 1440, // largeur où les tokens atteignent leur max (défaut 1440)
  $min-font-size: 14      // plancher a11y en px (défaut 0 = off)
);

100 % rétrocompatible. Pas de --eva-fluid-unit défini → fallback 1vw → valeur calculée identique à avant. fluidRuntime: false reproduit l'ancienne sortie octet pour octet.

vw vs cqi — qui suit quoi ?

Même slider, même largeur de frame. Regardez laquelle des deux cards bouge : la card cqi suit sa propre boîte, la card vw reste calée sur votre vraie fenêtre de navigateur.

vw — suit la fenêtre
900px

vw

clamp(1.125rem, 5vw, 4rem) — lit la vraie fenêtre, pas cette frame.

font-size 16px
cqi — suit le conteneur
900px

cqi

clamp(1.125rem, 5cqi, 4rem) — lit la largeur de cette frame.

font-size 16px

Faites glisser le slider — seule la card cqi bouge, car c'est la frame qui se redimensionne, pas votre navigateur. Redimensionnez maintenant votre vraie fenêtre : c'est la card vw qui réagit. Fenêtre réelle actuelle : 1920px.

Pourquoi ça existe

Vingt ans de design front-end. Je suis assis entre les designers et les développeurs — et je vois la même rupture à chaque fois. Les designers livrent des valeurs Figma que les développeurs traduisent en breakpoints rigides, et l'intention de design se perd entre les deux paradigmes.

EVA CSS transforme chaque valeur Figma fixe en variable fluide et responsive. Les maths se font une fois, le résultat tient sur tous les viewports, et la hiérarchie visuelle d'origine survit au passage du canvas au code.

Pour ton assistant IA

La référence complète tient dans un seul fichier.

Chaque variable, modificateur et formule vit dans /llms.txt. Copiez-le dans Claude, ChatGPT ou Cursor — votre assistant connaît EVA CSS par cœur.

Ouvrir /llms.txt →