Novinka: Vizuální editor pro éru AI webů. Poslední dílek skládačky, když chcete upravovat web a ne psát e-maily. www.directedit.dev

💬

Kalkulačka: responzivní fonty

Responzivní fonty šetří na webu tolik času, pokud se s nimi naučíte pracovat!

Nastavit na webu správně fonty u všech nadpisů, textů, tlačítek… může být někdy pekelně složité. A když do toho začne mluvit ještě responzivita, kdy je potřeba řešit velikosti pro jednotlivé breakpointy, je to úplně peklo.

Dobrá zpráva: odteď to dělat nemusíte. Stačí se naučit používat tuto kalkulačku a dáte sbohem různým přepíná breakpointů, nastavení @media queries… a dalším, jen kvůli fontům.

Jak na to

Nastavíte minimální a maximální šířku obrazovky (tedy rozsah, ve kterém se bude velikost fontu plynule měnit) a k nim odpovídající minimální a maximální velikost fontu.

Výstup je v remvw, root font-size = 16px
clamp(...)

Co výsledek znamená?

Kalkulačka vypočítá CSS funkci clamp(min, opt, max). Ta má 3 parametry:

  • minimum (nižší hodnota se nenastaví)
  • optimum – protože používá k výpočtu fontu velikost obrazovky vw, fonty se dynamicky zmenšují a zvětšují právě podle toho,
  • maximum (vyšší hodnota nikdy nenastane)

rem je jednotka, která se odvíjí od root elementu (html) – pokud s ní nehýbete, tak na 99,99% je to 16px nativně, jak to mají prohlížeče nastavené v sobě.

vw je jednotka, která se vypočítá jako 1/100 šířky obrazovky (vh je obdobná jednotka pro výšku).

Jak výsledek použít?

1. Přidáte clamp jako proměnnou do CSS. Nejčastěji se to dělá v root (nebo v definici proměnných, pokud je vaše nástroje mají zabudované):

:root {
  --h2-size: clamp(1.375rem, 0.282vw + 1.309rem, 1.563rem); 
}

2. Následně pak přiřadíte proměnnou (v našem případě --h2-size) tam, kde je třeba, např. do nadpisů jako klasickou hodnotu:

h2{
  font-size: var(--h2-size);
}

A máte hotovo. Jakmile si na práci s clamp() zvyknete, zjistíte, že vám ubylo nemalé množství práce.

Příklad kompletního zápisu CSS proměnných

/* @link https://utopia.fyi/type/calculator?c=350,15,1.2,1512,18,1.2,5,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12 */

:root {
  --step--2: clamp(0.651rem, 0.6118rem + 0.1793vw, 0.7813rem);
  --step--1: clamp(0.7813rem, 0.7342rem + 0.2151vw, 0.9375rem);
  --step-0: clamp(0.9375rem, 0.881rem + 0.2582vw, 1.125rem);
  --step-1: clamp(1.125rem, 1.0572rem + 0.3098vw, 1.35rem);
  --step-2: clamp(1.35rem, 1.2687rem + 0.3718vw, 1.62rem);
  --step-3: clamp(1.62rem, 1.5224rem + 0.4461vw, 1.944rem);
  --step-4: clamp(1.944rem, 1.8269rem + 0.5354vw, 2.3328rem);
  --step-5: clamp(2.3328rem, 2.1923rem + 0.6424vw, 2.7994rem);
}

Pozn: Pro velmi malé texty (např. 12px a méně) nebo extrémní titulky má pořád smysl použít pevnou hodnotu (px nebo vw).

Zdroje

FAQ

Nemusíte. clamp() dává největší smysl u nadpisů, většiny textů a tlačítek. U velmi malých textů (např. poznámky, patička, copyright) je často praktičtější použít pevnou velikost.

Právě proto je výstup v rem. Pokud má uživatel zvětšené základní písmo (např. kvůli přístupnosti), fonty se mu automaticky přepočítají – což je žádoucí chování.

Jednotka vw umožňuje navázat velikost fontu přímo na šířku obrazovky. Díky tomu se font plynule zvětšuje a zmenšuje mezi dvěma zvolenými hodnotami bez nutnosti media queries. % jsou navázaná na nejbližšího relativního rodiče, nikoli na šířku obrazovky.

Ne. clamp() je dnes podporovaný ve všech moderních prohlížečích (Chrome, Firefox, Safari, Edge). Pokud cílíte na běžné uživatele, není potřeba řešit fallback.

Jistěže! Stejný princip funguje i pro CSS vlastnosti:

  • margin, padding,
  • gap,
  • border-radius,
  • velikosti ikon nebo prvků,
  • a další.

Jen je potřeba dávat pozor, aby výsledek dával smysl napříč zařízeními.

Líbil se vám článek? Pošlete ho dál:

Jitka Klingenbergová

Jitka Klingenbergová

Absolventka ČVUT FIT oboru Informatika | Programátorka | Webová vývojářka, konzultantka a mentorka
tvorime@vyladeny-web.cz

Vaše komentáře

Zanechte první komentář

Zpět k tipům

Články na podobné téma

Pravidelná dávka užitečných tipů až do schránky