Урок 4 из 8 · 20 мин · обновлено
Адаптивность и доступность: телефон, планшет, программы экранного доступа
Как сделать сайт удобным на любом экране и для любого человека: медиазапросы и подход mobile first, относительные единицы, подписи к картинкам и полям, контраст и работа с клавиатуры.
Сначала телефон
Больше половины заказов в кофейне «Зерно» делают с телефона по дороге на работу. Если меню на узком экране разъезжается, а кнопку не нажать пальцем, заказ уйдёт к конкурентам.
Поэтому вёрстку начинают с телефона — этот подход называют mobile first. Базовые стили пишут для узкого экрана, а для широких добавляют изменения через медиазапросы:
.menu {
display: grid;
grid-template-columns: 1fr;
gap: 12px;
}
@media (min-width: 600px) {
.menu { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 960px) {
.menu { grid-template-columns: repeat(3, 1fr); }
}
На телефоне карточки идут в одну колонку, на планшете — в две, на компьютере — в три.
Относительные единицы
Чтобы вёрстка гибко подстраивалась, вместо жёстких пикселей часто используют относительные единицы:
%— доля от ширины родителя;rem— размер относительно базового шрифта: если человек увеличил шрифт в настройках, вся страница аккуратно увеличится;max-widthвместоwidth— блок не шире заданного, но может сжиматься.
.container { max-width: 1100px; margin: 0 auto; padding: 0 16px; }
img { max-width: 100%; height: auto; }
Вторая строка — простое правило, которое избавляет от картинок, вылезающих за край экрана.
Доступность
Доступность (accessibility, a11y) — чтобы сайтом могли пользоваться все: незрячие люди с программами экранного доступа, люди с плохим зрением, те, кому трудно управлять мышкой. Это не «для галочки»: таких людей миллионы, и многие из них — клиенты кофейни.
Базовые правила:
- У картинок — alt с описанием. Декоративные картинки получают пустой
alt="", чтобы программа их пропускала. - У полей формы — подписи
label, связанные с полем:
<label for="phone">Телефон для связи</label>
<input id="phone" type="tel" autocomplete="tel">
- Достаточный контраст текста и фона: светло-серый текст на белом многие просто не прочитают.
- Кнопки — это
button, ссылки — этоa: тогда они работают с клавиатуры без лишнего кода. - Видимый фокус: когда человек переходит по странице клавишей Tab, должно быть видно, где он сейчас. Нельзя убирать обводку
outlineбез замены.
Как проверять
- Сжать окно браузера или включить в инструментах разработчика режим устройства — посмотреть сайт на ширине 360–400 пикселей.
- Пройти страницу клавишей Tab — до каждой кнопки можно дойти и нажать её Enter.
- Запустить автоматическую проверку — например, Lighthouse во вкладке инструментов разработчика в браузерах на основе Chromium: он найдёт картинки без alt и низкий контраст.
Попробуйте сами. В форме заказа «Зерна» нашли проблемы: поле телефона без подписи, только серый текст-подсказка внутри; кнопка «Заказать» сделана из div; на телефоне форма шире экрана. Как исправить каждую?
Пример ответа
- Подсказка вместо подписи исчезает при вводе, а программа экранного доступа её может не прочитать. Добавить
labelс текстом «Телефон» и связать с полем черезforиid. - Кнопка из
divне нажимается с клавиатуры. Заменить на<button type="submit">Заказать</button>. - Форма шире экрана: убрать фиксированную ширину в пикселях, поставить
max-width: 100%и проверить на ширине 360 пикселей.
Мини-тест · 4 вопроса
Проверьте себя
Выберите вариант, который кажется вам правильным. В конце вы увидите свой результат и объяснение к каждому вопросу.
-
Что такое подход mobile first?
Простой вид для телефона — основа, а медиазапросы добавляют колонки и украшения, когда экран позволяет.
-
Зачем картинке атрибут alt?
Незрячий человек услышит описание из alt. Без него картинка для него — пустое место.
-
Поле формы без подписи label. Чем это плохо?
Связанная подпись делает поле понятным для всех: и для программ экранного доступа, и для тех, кто промахивается мимо маленького поля.
-
Как проверить доступность сайта с клавиатуры?
Многие люди не пользуются мышкой. Если до кнопки нельзя добраться клавишей Tab, для них сайт сломан.