Utilitaires✨ Premium

Typography Adapts

Titre et paragraphe dont la taille, la graisse, l'interlettrage et l'interligne changent en quatre paliers selon la largeur du bloc qui les contient.

CSS@containerTypography

Mis à jour le

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

3 exemples d'usage

Magazine Plumevère — la même citation en exergue pleine largeur et dans l'encadré « En bref » — Typography Adapts exemple 1

① Magazine Plumevère — la même citation en exergue pleine largeur et dans l'encadré « En bref »

QuandDans un portrait de facteur d'orgues, la citation occupe toute la largeur de l'article et prend le palier 400 px : gros titre resserré, chapeau aéré. Plus bas, l'encadré « En bref » de 172 px reprend le composant au plus petit palier.
PourquoiLe rédacteur pose le même bloc partout ; la hiérarchie typographique suit la place, sans classes « grand » ou « petit » à choisir.
RéglagesDeux racines ; la citation est bordée d'un filet rouge par le CSS de la scène, l'encadré a une bordure et un intertitre « En bref » au-dessus du composant.
Éditeur de newsletter Tremaudin — la colonne de texte qu'on élargit à côté d'une image — Typography Adapts exemple 2

② Éditeur de newsletter Tremaudin — la colonne de texte qu'on élargit à côté d'une image

QuandOn fait glisser la poignée entre la colonne de texte et l'image : le titre passe de 12 à 18 puis 26 px, le texte s'aère. Au chargement, la colonne va de 190 à 420 px et revient.
PourquoiL'auteur voit le rendu de chaque largeur de colonne avant l'envoi, sans fixer de taille de police à la main.
RéglagesPoignée réglant la largeur de la colonne entre 170 et 430 px ; le dernier palier (550 px) ne tient pas dans la scène et n'est pas montré.
Tableau blanc Ardoisine — les notes passent au petit palier quand on ouvre les commentaires — Typography Adapts exemple 3

③ Tableau blanc Ardoisine — les notes passent au petit palier quand on ouvre les commentaires

QuandDeux notes sont épinglées sur le tableau, en 18 px. Un clic sur « Commentaires » ouvre une colonne à droite : le tableau rétrécit, chaque note passe sous 250 px et son texte repasse au plus petit palier.
PourquoiLes notes restent entières et lisibles d'un coup d'œil, même quand le panneau prend de la place.
RéglagesBouton (aria-expanded) qui ouvre une colonne de 172 px ; chaque note est une racine avec un liseré de couleur ajouté par la scène.

Comment ça marche

La racine .fx-0759-root (fond #0a0a0f, pleine largeur) déclare container: tya-text / inline-size. Dedans, .tya-block ajoute 16 px de marge intérieure autour d'un h3 et d'un paragraphe. Au plus étroit, le titre fait 12 px en graisse 800 et le texte 10 px, interligne 1,4 : de quoi tenir dans une vignette.

Trois règles @container tya-text prennent le relais. À 250 px : titre 18 px resserré (letter-spacing: -0.02em), texte 13 px légèrement aéré. À 400 px : titre 26 px en graisse 700, texte 15 px, interligne 1,6. À 550 px : titre 34 px très resserré (-0.04em), texte 17 px, interligne 1,7. Le titre se resserre à mesure qu'il grossit et le texte s'aère, comme on le fait à la main dans une mise en page de magazine.

Chaque passage se fait en douceur grâce à transition: .4s sur le bloc, le titre et le paragraphe. Le composant ne contient aucun script : ce sont uniquement des règles CSS appliquées à la largeur réelle du bloc.

Accessibilité

  • Petit palier très petit : sous 250 px, le paragraphe fait 10 px, en dessous de ce que beaucoup de lecteurs lisent confortablement. Si le bloc risque d'être étroit sur mobile, remontez la taille de base de .tya-block p à 12 ou 13 px.
  • Unités en pixels : les tailles sont en px ; le zoom du navigateur les agrandit, mais pas le réglage « taille du texte » de certains systèmes. Remplacez-les par des rem pour respecter ce réglage.
  • Structure intacte : seuls les styles changent ; le titre reste un h3 (à adapter à votre hiérarchie) et le texte un paragraphe.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, les transitions de taille sont supprimées.

Compatibilité navigateur

Requêtes de conteneur uniquement. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : quatre états aux mêmes largeurs (bascules entre 230 et 260, 380 et 430, 520 et 620 px), sans erreur ni débordement.

Chrome 105+✓ Complet (mesuré)
Firefox 110+✓ Complet (mesuré)
Safari 16+✓ Complet (mesuré sous WebKit)
Edge 105+✓ Complet
Mobile iOS 16+✓ Complet
Android Chrome 105+✓ Complet

Sans @container, le texte reste au plus petit palier (12 px / 10 px) : prévoyez une taille de base plus grande si votre public utilise de vieux navigateurs.

Le code

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

index.html — structure
<div class="fx-0759-root">
  <div class="tya-block">
    <h3>Titre</h3>
    <p>Paragraphe</p>
  </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
Paliers (CSS — @container tya-text (min-width: 250px / 400px / 550px)) 250, 400 et 550 px Supprimez le dernier si vos blocs ne dépassent jamais 500 px ; ajoutez un palier à 720 px pour une très grande citation.
Tailles de base (CSS — .tya-block h3 et .tya-block p) 12 px et 10 px Montez à 15 px et 13 px pour garder le petit palier lisible sur mobile.
Interlettrage du titre (CSS — letter-spacing par palier) 0 → -0,02 → -0,03 → -0,04 em Avec une police déjà serrée, gardez 0 aux deux premiers paliers.
Couleurs (CSS — .fx-0759-root, h3, p) Fond #0a0a0f, titre blanc, texte blanc à 70 % Pour un fond clair : fond blanc, titre #111, texte #444.
Vitesse (CSS — transition: .4s) 0,4 s none si le bloc change souvent de largeur (glisser une colonne) et que l'animation gêne.
Version continue (CSS) Paliers Pour une taille qui suit la largeur en continu, remplacez les paliers par font-size: clamp(12px, 6cqi, 34px) sur le titre (unités de conteneur).

FAQ

Les paliers changent aussi la graisse, l'interlettrage et l'interligne, ce qu'une seule formule fluide ne fait pas. Vous pouvez mélanger : paliers pour l'interlettrage, clamp() en unités cqi pour la taille.
C'est le premier palier (10 px pour le paragraphe). Augmentez les tailles de la règle de base, ou abaissez le premier palier à 200 px pour que votre barre latérale l'atteigne.
Oui, à condition de garder les sélecteurs : remplacez h3 par votre balise dans le HTML et dans les règles .tya-block h3.