Урок 47. Старый vs Новый: Кроссбраузерность: @supports, фолбэки

📁 Раздел: Качество вёрстки ⏱️ Время изучения: ~80 мин 🎯 Сложность: Продвинутая
#supports #not

⚡ Кратко

Слепое использование новой фичи без проверки → @supports с рабочим фолбэком. Сначала база, потом улучшение поверх неё.

Суть изменения

Раньше разработчики либо писали новую фичу «как есть» (и она ломалась в старых браузерах), либо угадывали браузер по user-agent. Сегодня правильный путь — @supports: браузер сам сообщает, понимает ли он свойство, а мы держим рабочую базу на случай «нет».

❌ Старый подход: фича без проверки

Сразу display: grid без фолбэка. В браузере без grid сетка не сработает, карточки слипнутся.

📄 lesson-47/problem.css
.cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
/* fallback отсутствует, browser matrix неизвестна */

✅ Современный подход: база + @supports

Сначала простая рабочая база, затем grid поверх неё — только при поддержке.

📄 lesson-47/fixed.css
.cards { display: block; }            /* работает везде */

@supports (display: grid) {           /* улучшение при поддержке */
  .cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
  }
}

Что увидит пользователь

❌ Старый браузер на «фиче без фолбэка» — слиплось

A
B
C

✅ Тот же браузер с фолбэком — читаемо

A
B
C
/* фолбэк даёт хотя бы отступы между карточками */
.card + .card { margin-top: .5rem; }

Навигация