Урок 31. Старый vs Новый: Проблемы разных экранов: viewport и DPR

📁 Раздел: Адаптивная вёрстка ⏱️ Время изучения: ~65 мин 🎯 Сложность: Средняя
#meta #viewport #image-set

⚡ Кратко

Старое: фиксированная width: 1200px и одна растровая картинка → скролл на телефоне и мыло на retina. Новое: width: min(100% - 2rem, 72rem) + image-set() с 1x/2x.

Старый подход

Жёсткие размеры и поздние исправления часто создают горизонтальный скролл, слишком длинные строки или нечитаемые карточки. На узком экране фиксированные 1200px не помещаются:

width: 1200px — не влезает в телефон, нужен горизонтальный скролл →
/* lesson-31/old.css */
.page { width: 1200px; }
.hero { background-image: url(hero-small.jpg); }

Современный подход

Сначала задаём гибкую основу, затем добавляем breakpoint только там, где он действительно улучшает содержимое. Блок никогда не выходит за окно:

min(100% - 2rem, 72rem) — всегда внутри окна, с отступами
/* lesson-31/modern.css */
.page {
  width: min(100% - 2rem, 72rem);
  margin-inline: auto;
}
.hero {
  background-image: image-set(
    url(hero.jpg) 1x,
    url(hero@2x.jpg) 2x   /* чёткость на retina */
  );
}

Навигация