1. Klasika: Media Queries (@media)

Media queries jsou “přepínače”. Říkají prohlížeči: „Pokud je displej užší než 768px, změň barvu pozadí.“ Je to základní nástroj pro měnění rozvržení (layoutu).

/* Mobile-first přístup: základ je pro mobil, @media pro desktop */
.container {
  display: flex;
  flex-direction: column;
}
 
@media (min-width: 768px) {
  .container {
    flex-direction: row; /* Na tabletu a PC budou vedle sebe */
  }
}

2. Funkce min(), max() a clamp()

Tohle je ta pravá magie. Tyto funkce umožňují elementům dýchat a měnit velikost dynamicky bez nutnosti psát desítky media queries.

min(hodnota1, hodnota2)

Vybere menší z obou hodnot. Skvělé pro šířku kontejneru.

  • width: min(90%, 1200px); – Element bude mít 90 % šířky displeje, ale nikdy nepřesáhne 1200px.

max(hodnota1, hodnota2)

Vybere větší z obou hodnot. Dobré pro zajištění minimální čitelnosti.

  • font-size: max(2vw, 16px); – Písmo se bude zvětšovat podle šířky okna, ale nikdy neklesne pod 16px.

clamp(minimum, ideál, maximum)

Svatý grál responzivity. Definuje rozsah, ve kterém se hodnota může pohybovat.

  • width: clamp(300px, 50%, 800px); – Chci, aby element měl ideálně 50 % šířky, ale nesmí být menší než 300px a větší než 800px.

3. Fluidní typografie (Plynulé písmo)

Dříve jsme museli měnit velikost písma pomocí breakpointů (na mobilu 16px, na desktopu 24px). S clamp() se písmo zvětšuje plynule s každým pixelem šířky okna.

CSS

h1 {
  /* clamp(MIN, VAL, MAX) */
  font-size: clamp(1.5rem, 5vw + 1rem, 3rem);
}
  • 1.5rem: Nejmenší možná velikost (na mobilu).
  • 5vw + 1rem: Dynamická hodnota (roste s šířkou okna).
  • 3rem: Maximální velikost (na velkých monitorech).