Какой опыт есть с масштабированием текста под разные экраны
Что проверяют
Вопрос из фронтенда, и Node.js-разработчику его задают, когда в вакансии есть фулстек или серверный рендеринг. Интервьюер хочет понять, знаете ли вы современную адаптивную типографику, а не только медиазапросы с жёсткими пикселями. Следом часто спрашивают, что будет при зуме браузера до 200%.
Как отвечать
Опишите подход по слоям, с примерами из своих проектов:
- относительные единицы: размер шрифта в
rem, отступы внутри компонента вem. Корневой размер лучше не фиксировать вpx, иначе перестанет работать настройка шрифта в браузере; - плавная типографика:
font-size: clamp(1rem, 0.9rem + 0.6vw, 1.25rem). Размер растёт с шириной окна, но не выходит за границы. Слагаемое вremобязательно: чистыеvwне реагируют на зум, и текст нарушает требование WCAG о масштабировании до 200%; - медиазапросы и контейнерные запросы:
@mediaдля крупных перестроек,@containerи единицыcqi, когда размер текста зависит от ширины карточки, а не экрана; - читаемость:
line-heightбез единиц, около 1.5 для основного текста, ширина строки черезmax-widthвch, от 60 до 75 символов; - мобильные мелочи: мета-тег
viewportсwidth=device-width, поля ввода не мельче 16px, иначе Safari на iOS приближает страницу при фокусе.
Свяжите это со стеком: в SSR-проектах на Next.js или Express с шаблонизатором стили собираются через PostCSS или Tailwind на том же Node.js, а проверяете вы их в DevTools и на реальных телефонах. Если вы в основном бэкенд-разработчик, скажите об этом прямо и опишите то, что делали сами: правили стили админки, чинили вёрстку писем. Честное «на уровне уверенного пользователя» лучше выдуманного опыта.
Где спотыкаются
Делают шрифт целиком на vw. На широком мониторе текст становится огромным, на телефоне мелким, а зум браузера перестаёт его увеличивать.
Называют vw и vh библиотекой. Это нативные единицы CSS, отдельный пакет для них не нужен.
Строят адаптивность на десятке медиазапросов с шагом в 100 пикселей вместо одного clamp(), после чего поддерживать размеры становится мучением.