Frontend
CSS #
CSS Core #
Junior #
Что такое CSS и как браузер применяет его к HTML?
|
CSS описывает presentation документа. Браузер разбирает stylesheets в CSSOM, сопоставляет selectors с DOM, разрешает cascade и inheritance, вычисляет значения, а затем использует их для layout, paint и compositing. |
Что такое selector и declaration?
|
Selector выбирает элементы, declaration задает пару property/value внутри rule. Несколько selectors могут совпасть с одним элементом, после чего cascade определяет победившее значение каждого property. |
Что такое cascade?
|
Cascade разрешает конфликт declarations по relevance, origin и importance, cascade layer, specificity, scope proximity и порядку. Specificity — только один этап, поэтому «самый тяжелый selector всегда побеждает» — неверное упрощение. |
Что такое inheritance в CSS?
|
Некоторые properties, например |
Что такое initial value и что делают inherit, initial, unset, revert?
|
Каждое property имеет initial value. |
Что такое CSS box model?
|
Box состоит из content, padding, border и margin. При |
Чем единицы em, rem, %, vw, vh и px отличаются?
|
|
Что такое CSS custom properties?
|
Custom properties объявляются как |
Что такое currentColor?
|
|
Веса в CSS
|
Специфичность селектора записывают как три числа:
Если все три селектора подходят одному элементу, победит Inline style рассматривают отдельно: он сильнее обычной специфичности selector.
|
Что такое user agent style?
|
То есть CSS, который браузер сам применяет к HTML-элементам, даже если ты не написал свой CSS.
Даже без CSS у них уже есть внешний вид:
|
Что делает box-sizing: border-box?
|
При
|
Как браузер сопоставляет CSS selector с элементами?
|
Браузер строит CSSOM и сопоставляет selectors с DOM-элементами, обычно начиная с правой части selector и проверяя ancestors дальше влево. Поэтому слишком общие правые части и глубокие chains могут быть дороже, но в большинстве интерфейсов bottleneck чаще в layout, paint и количестве DOM, а не в одном selector. Писать selectors все равно стоит простыми и устойчивыми к изменениям разметки. |
Middle #
Чем reset CSS отличается от normalize CSS?
|
Reset CSS aggressively сбрасывает browser defaults, чтобы начать с почти пустой базы. Normalize CSS сохраняет полезные
defaults и выравнивает различия между браузерами точечнее. В современных проектах часто используют небольшой base layer:
На интервью важно услышать trade-off: reset дает больше контроля, но требует явно восстановить полезные defaults, а normalize-подход меньше ломает привычное поведение браузера. Выбор должен быть частью design system или base styles, а не случайным package в dependencies. |
Какие ошибки делают CSS неэффективным?
|
Частые ошибки: огромный unused CSS, слишком широкие global rules, тяжелые shadows/filters на больших списках,
|
CSS Layout #
Middle #
Что такое normal flow?
|
Normal flow — стандартное размещение элементов без positioning, float и специальных layout-контекстов. Block-элементы идут сверху вниз, inline-контент располагается внутри строк. Flex и Grid создают собственные правила раскладки для дочерних элементов. |
Что такое block formatting context?
|
BFC — изолированный контекст раскладки block-элементов. Он удерживает floats и предотвращает схлопывание внешних margin
с содержимым в ряде случаев. Его создают, например, |
Что такое inline formatting context?
|
В нем текст и inline boxes формируют строки внутри контейнера. На расположение влияют |
Что такое margin collapsing?
|
Вертикальные margin соседних block boxes в normal flow могут объединиться в один margin вместо суммы. Обычно остается наибольший положительный отступ, а отрицательные значения участвуют по отдельным правилам. Flex и Grid items не схлопывают margin. |
Когда margin схлопывается?
|
Между соседними block-элементами, а также между parent и первым или последним child при отсутствии border, padding, inline content и разделяющей высоты. Может схлопываться margin пустого блока. Это относится к block formatting context. |
Как избежать схлопывания margin?
|
Предпочесть |
Когда margin не схлопывается?
|
У flex/grid items, absolutely positioned elements, floats и элементов в разных BFC. Border, padding или inline content между parent и child также разделяют margin. Горизонтальные margin не схлопываются. |
Что такое positioning в CSS?
|
Свойство |
Чем отличаются relative, absolute, fixed и sticky?
|
|
Что такое stacking context?
|
Это локальная система наложения элементов. Новый context создают, например, positioned element с |
Что такое z-index и почему он иногда не работает?
|
|
Что такое overflow?
|
Overflow описывает поведение содержимого, выходящего за padding box. Он может обрезать содержимое или создать scroll container. Это влияет на sticky positioning, доступность скрытого контента и layout. |
Чем отличаются overflow: hidden, auto, scroll и clip?
|
|
Что такое scroll-snap?
|
Scroll Snap позволяет контейнеру после прокрутки остановиться у заданных snap positions. Контейнер задает ось и строгость, элементы — точки выравнивания. Это CSS-enhancement, а не замена доступной навигации carousel.
|
Когда стоит использовать scroll-snap?
|
Для горизонтальных галерей, paged sections и сценариев, где остановка на целом элементе ожидаема пользователем. Нужно оставить обычную прокрутку и элементы управления. Для длинного читаемого контента mandatory snapping часто мешает. |
Какие проблемы бывают у scroll-snap на мобильных устройствах?
|
Слишком строгий snap может бороться с жестом пользователя, затруднять диагональную прокрутку и перескакивать после изменения размера контента. Safe areas и browser chrome меняют viewport. Поведение нужно проверять на touch devices и с увеличенным шрифтом. |
Что такое containing block?
|
Containing block — прямоугольник, относительно которого вычисляются position и percentage sizes элемента. Его источник
зависит от |
Что такое float и почему сейчас его редко используют для layout?
|
|
Какие способы clearing существуют и когда они нужны?
|
Clearing нужен, когда контейнер должен учитывать плавающие элементы. Исторически использовали |
Как решать browser-specific CSS issues?
|
Сначала нужно воспроизвести проблему в конкретном браузере, проверить поддержку свойства, cascade, computed styles и
минимальный пример. Затем выбирают feature detection через |
Что такое feature-constrained browser?
|
Это браузер или webview, где часть современных возможностей отсутствует или ограничена: старый engine, embedded webview,
режим экономии, слабое устройство или корпоративная среда. Интерфейс должен иметь базовый рабочий слой и улучшаться при
наличии возможностей. Это практическая причина использовать progressive enhancement и проверку |
Какие плюсы и минусы у CSS preprocessors?
|
Sass/Less дают nesting, mixins, functions, modules и удобства для дизайн-систем. Минусы: дополнительная сборка, риск глубокой вложенности, абстракций поверх CSS и расхождения с runtime-возможностями браузера. Многие задачи сегодня закрывают native CSS custom properties, nesting, cascade layers и modern selectors. |
Зачем нужны CSS postprocessors?
|
CSS postprocessors обрабатывают уже написанный CSS: добавляют vendor prefixes, оптимизируют output, раскрывают современный синтаксис или проверяют правила. Типичный пример — PostCSS с Autoprefixer. Это снижает ручную работу, но должно опираться на реальную browser support policy, а не на настройки на всякий случай. |
Как подключать нестандартные шрифты?
|
Шрифты подключают через Командные правила для fonts должны описывать источник файлов, разрешенные weights, fallback stack, |
Что такое FOUT и FOIT?
|
FOUT означает, что браузер сначала показывает fallback font, а потом заменяет его на custom font. FOIT означает, что
текст временно невидим, пока custom font не загрузится. Обычно этим управляют через |
Что такое pseudo-element?
|
Pseudo-element создает стилизуемую часть элемента, которой нет как отдельного DOM-узла: |
Что такое pseudo-class?
|
Pseudo-class выбирает элемент по состоянию или отношению: |
Чем nth-child() отличается от nth-of-type()?
|
|
Чем responsive layout отличается от mobile-first strategy?
|
Responsive layout адаптирует интерфейс к разным размерам и возможностям устройства. Mobile-first — стратегия написания
CSS, где базовые стили рассчитаны на узкий экран, а более широкие состояния добавляются через |
Что такое fixed, fluid и responsive layout?
|
Fixed layout использует жесткие размеры и почти не реагирует на viewport. Fluid layout растягивается в процентах или гибких единицах. Responsive layout меняет структуру, размеры и иногда порядок content через constraints, media queries, Flexbox, Grid и container queries. |
Middle+ or Senior #
Чем display: block, inline, inline-block, flex, grid отличаются друг от друга?
|
|
Как визуально скрыть элемент, но оставить его доступным для screen reader?
|
Используют visually-hidden class: элемент остается в DOM и accessibility tree, но визуально убран за счет clipping и
минимального размера. Нельзя использовать |
Какие media types кроме screen существуют?
|
Чаще всего встречаются |
Что такое retina graphics и какие техники использовать?
|
Retina graphics учитывает высокий device pixel ratio, где одному CSS pixel соответствует несколько device pixels. Для
растровых изображений используют |
Практика по CSS #
CSS Flexbox #
Практический пример: examples/css/flexbox
Junior #
Что такое Flexbox?
|
Flexbox — одномерная модель раскладки для строки или колонки. Она распределяет свободное пространство, выравнивает элементы и управляет их ростом и сжатием. Подходит для toolbar, sidebar/content и элементов компонента.
Практика: |
Какие задачи решает Flexbox?
|
Flexbox помогает строить одномерные раскладки: строку, колонку, toolbar, группу кнопок, карточку или пару sidebar и content. Он распределяет свободное место, выравнивает элементы, управляет переносом, ростом и сжатием flex items. Практика: |
Что такое main axis и cross axis?
|
Main axis задается Практика: |
Что делает flex-direction?
|
Практика: |
Что делает flex-wrap?
|
Практика: |
Что делает gap во Flexbox?
|
Практика: |
Что значит flex: 1?
|
В современном CSS это обычно раскрывается примерно в Практика: |
Как прижать кнопку или блок к низу карточки через Flexbox?
|
Карточку делают flex-контейнером с Практика: |
Как центрировать элемент по горизонтали и вертикали через Flexbox?
|
Контейнеру задают Практика: |
Middle #
Чем justify-content отличается от align-items?
|
Практика: |
Почему gap часто удобнее, чем margin между элементами?
|
Практика: |
Что делают flex-grow, flex-shrink и flex-basis?
|
Практика: |
Чем flex-basis: 0 отличается от flex-basis: auto?
|
Практика: |
Почему во Flexbox часто нужен min-width: 0?
|
Flex items по умолчанию имеют automatic minimum size, часто равный min-content width. Длинный текст или вложенный блок
может растягивать колонку и ломать layout. Практика: |
Как сделать две колонки, где одна занимает фиксированную ширину, а вторая все остальное место?
|
Контейнеру задают Практика: |
Как сделать равные колонки через Flexbox?
|
Для равных колонок обычно задают элементам одинаковое сокращение, например Практика: |
Какие типичные ошибки бывают при использовании Flexbox?
|
Частые ошибки: путать main axis и cross axis, ждать от Flexbox полноценной двумерной сетки, забывать про Практика: |
CSS Grid #
Практический пример: examples/css/grid
Junior #
Что такое CSS Grid?
|
Grid — двумерная система раскладки со строками, колонками и областями. Она позволяет определить структуру контейнера, а элементам — занимать одну или несколько ячеек. Grid удобен для карточек и page-level layout. Практика: |
Что делают grid-template-columns и grid-template-rows?
|
Они описывают явные tracks сетки и их размеры. Можно использовать px, Практика: |
Middle #
Когда лучше использовать Flexbox, а когда CSS Grid?
|
Flexbox выбирают для строки, колонки, выравнивания и неизвестного числа элементов. Grid — когда важны согласованные колонки, строки или двумерные области. Если приходится имитировать строки вложенными flex-контейнерами, Grid обычно проще. Практика: |
Чем Grid отличается от Flexbox?
|
Grid управляет двумя измерениями одновременно и начинает с структуры контейнера. Flexbox распределяет элементы вдоль одной основной оси и лучше адаптируется к содержимому. Их часто комбинируют: Grid для страницы, Flexbox внутри компонентов. Практика: |
Когда лучше использовать Grid вместо Flexbox?
|
Grid лучше выбирать для двумерной структуры: согласованных строк, колонок, областей страницы и карточных сеток. Flexbox удобнее для одномерного распределения элементов внутри компонента. Если layout одновременно зависит и от строк, и от колонок, Grid обычно проще и устойчивее. Практика: |
Что такое minmax()?
|
Практика: |
Что такое auto-fit и auto-fill?
|
Оба значения создают столько повторяющихся tracks, сколько помещается.
Практика: |
Что такое Grid stacking?
|
Grid stacking — прием, при котором несколько grid items размещают в одной и той же области сетки или в пересекающихся
grid lines. Элементы накладываются друг на друга, а порядок слоя определяется обычными правилами stacking context:
порядком в DOM, Это удобно для overlay: текст поверх изображения, badge на карточке, декоративный слой или controlled overlap без
Практика: |
Как сделать Grid wrapping?
|
В Grid нет прямого аналога Так сетка сама вычисляет, сколько колонок помещается в контейнер, и переносит лишние элементы на следующую строку без media queries.
Практика: |
CSS Responsive #
Middle #
Чем responsive design отличается от adaptive design?
|
Responsive layout плавно подстраивается под доступное пространство, а adaptive обычно выбирает несколько заранее подготовленных layouts для диапазонов устройств. На практике подходы комбинируют, а границы выбирают по content, не по моделям телефонов. |
Что такое mobile-first?
|
Mobile-first начинает с базового layout для узкого экрана и добавляет возможности через |
Что такое safe area?
|
Safe area учитывает вырезы, скругления и системные overlays устройства. Значения |
Как учитывать разные плотности экранов?
|
Layout строят в CSS pixels, а raster assets предоставляют с подходящим resolution через |
Как responsive images связаны с responsive layout?
|
Layout определяет отображаемую ширину, а |
Middle+ or Senior #
Что такое media query?
|
|
Что такое container query и чем она отличается от media query?
|
Media query смотрит на viewport или device features, container query — на размер или styles ближайшего query container. Container queries делают компонент адаптивным к месту использования, независимо от ширины всей страницы. |
Что такое fluid typography и как работает clamp()?
|
Fluid typography плавно меняет размер между границами.
Границы сохраняют читаемость на очень узких и широких экранах. |
CSS Architecture #
Junior #
Что такое CSS methodology и зачем она нужна?
|
CSS methodology — это набор правил для организации CSS: например BEM, SMACSS, OOCSS, CSS Modules или utility-first подход. Методология помогает договориться, как называть классы, где хранить styles и как ограничивать область влияния. Важно не название методологии, а консистентность, понятные границы и documented exceptions. |
Что такое design tokens?
|
Tokens — именованные design decisions: colors, spacing, typography, radii, motion. Их хранят в нейтральном source of
truth и преобразуют в CSS custom properties, platform constants и design-tool variables. Семантические tokens вроде
|
Что такое cascade layers @layer?
|
Cascade layers задают явный порядок групп styles до сравнения specificity. Например, |
Что такое Shadow DOM style encapsulation?
|
Shadow DOM создает отдельное tree boundary: обычные document selectors не проникают внутрь, а внутренние styles не
выходят наружу. Наследуемые properties, CSS custom properties, |
Что такое BEM?
|
BEM делит CSS-имена на block, element и modifier:
Соглашение делает связи явными и снижает конфликты глобальных стилей, но длинные имена и ручная дисциплина могут быть избыточны при надежной component style isolation. |
Middle #
Зачем команде нужны CSS principles?
|
CSS principles фиксируют подход к именованию, композиции, специфичности, layout, responsive design и переиспользованию.
Без таких правил CSS быстро превращается в набор случайных overrides. Хороший ответ должен упомянуть локальность стилей,
короткие selectors, осторожность с |
Когда отклонение от CSS methodology допустимо?
|
Отклонение допустимо, если стандартный подход плохо решает конкретную задачу: интеграция с внешним UI kit, legacy-код, performance-ограничение или нестандартный layout. Исключение должно быть локальным, объясненным и по возможности задокументированным, иначе оно быстро становится новой неявной методологией. |
Как выбрать CSS framework для проекта?
|
CSS framework выбирают по требованиям продукта: скорость разработки, accessibility компонентов, кастомизация, bundle size, качество документации, SSR-совместимость и связь с design system. Важно заранее решить, где команда следует framework, а где пишет собственный слой, иначе проект обрастает хаотичными overrides. |
Какие плюсы и минусы у БЭМ?
|
БЭМ дает предсказуемые глобальные имена и явно показывает block, element и modifier. Цена — длинные class names, дисциплина соглашений и возможное дублирование контекста там, где framework уже изолирует component styles. |
Чем CSS Modules, CSS-in-JS и utility-first CSS отличаются?
|
CSS Modules генерируют локальные class names, CSS-in-JS связывает styles с JavaScript runtime или build step, utility-first собирает UI из небольших готовых classes. Выбор влияет на isolation, runtime cost, theming, tooling, server rendering и читаемость markup. |
Какие плюсы и минусы у Tailwind-подхода?
|
Utilities ускоряют композицию, ограничивают произвольные значения и удаляют неиспользуемые rules при сборке. Минусы — шумная markup, необходимость соглашений для повторяющихся patterns и риск смешать design decisions со случайными utilities без tokens и component boundaries. |
Как сделать theme и dark theme?
|
Компоненты используют semantic custom properties, а theme переопределяет их на root container. Начальный выбор может
учитывать |
Почему глобальные стили могут быть проблемой?
|
Широкие selectors создают неявные зависимости, conflicts и regressions в далеких features. Global layer оставляют для reset, tokens, typography и действительно общих primitives; component и feature styles ограничивают понятными boundaries. |
Чем SCSS @import отличается от @use?
|
Legacy
Для нового Sass-кода используют |
Какие есть способы изоляции стилей?
|
Основные варианты:
Изоляция уменьшает конфликты, но global tokens, typography и overlays все равно требуют продуманного общего слоя. |
Middle+ or Senior #
Какие плюсы и минусы готового UI Kit?
|
Плюсы: единый дизайн, accessibility primitives, быстрый старт, готовые сложные компоненты и меньше дублирования. Минусы: ограниченная кастомизация, лишний bundle, зависимость от release cycle и сложные обновления. Перед выбором проверяют accessibility, theming, SSR, forms integration, поддержку Angular-версий и качество API. |
CSS Rendering и Performance #
Middle+ or Senior #
Что такое critical CSS?
|
Critical CSS — минимальный набор стилей, нужный для первого видимого экрана. Его можно встроить в HTML или выделить отдельно, чтобы браузер быстрее показал initial view. В Angular SSR/prerender сценариях это может улучшить perceived performance, но усложняет build pipeline, cache и диагностику визуальных regressions. |
Что такое reflow/layout?
|
Layout вычисляет геометрию render tree: размеры и координаты элементов. Изменение ширины, шрифта или структуры может потребовать пересчета части или всей страницы. Стоимость растет с размером и связанностью layout. |
Почему GPU не делает любую анимацию бесплатной?
|
Compositor может дешево перемещать готовый layer, но его сначала нужно rasterize и хранить в GPU memory. Большие layers,
filters, uploads и частые изменения content создают overhead. Производительность подтверждают trace, а не наличием
|
Что делают contain и content-visibility?
|
|
Что такое repaint?
|
Paint рисует пиксели для фона, текста, border, shadow и других визуальных свойств. Он может выполняться без нового layout, если геометрия не изменилась. Большие painted areas и сложные эффекты увеличивают стоимость. |
Что такое compositing?
|
Compositing собирает ранее нарисованные слои в итоговый кадр, применяя трансформации и прозрачность. Эту работу часто можно передать compositor thread/GPU. Но создание и хранение слоев расходует память. |
Чем reflow отличается от repaint?
|
Reflow пересчитывает геометрию и обычно приводит к последующему paint. Repaint меняет пиксели без обязательного пересчета размеров. Compositing может обновить итоговый кадр без обоих этапов для подходящих свойств. |
Какие CSS-свойства чаще вызывают layout?
|
Свойства размеров и геометрии: |
Какие CSS-свойства чаще вызывают paint?
|
Цвета, backgrounds, borders, shadows и часть filters обычно требуют paint, но не layout. Чем больше область и сложнее эффект, тем дороже операция. Реальная pipeline зависит от браузера и layer structure. |
Почему transform и opacity обычно лучше для анимаций?
|
Они часто применяются на этапе compositing без повторного layout и paint содержимого. Это уменьшает работу main thread и делает кадры стабильнее. Гарантии нет: сложная сцена и лишние layers тоже могут быть дорогими. |
Что выполняется на CPU, а что может уйти на GPU?
|
JavaScript, style calculation и layout в основном выполняются CPU/main thread. GPU часто ускоряет rasterization и compositing слоев. Он не делает произвольную CSS-анимацию бесплатной и не исправляет long JavaScript tasks. |
Что такое compositor layer?
|
Это поверхность, которую браузер может независимо перемещать и смешивать при сборке кадра. Layers полезны для анимируемых элементов, fixed content и video. Каждый слой требует памяти и может увеличить raster/compositing work. |
Что такое layer promotion?
|
Браузер решает вынести элемент в отдельный compositor layer из-за transform, animation или других эвристик. Разработчик
может подсказать намерение через |
Что делает will-change?
|
Он заранее сообщает браузеру, какое свойство скоро изменится, чтобы подготовить оптимизацию. Использовать его следует незадолго до анимации и для ограниченного числа элементов. После завершения долгой подготовки hint можно убрать. |
Почему will-change нельзя ставить на все элементы?
|
Браузер может создать слишком много слоев и потратить GPU memory. Это увеличивает rasterization, compositing и иногда
ухудшает производительность сильнее исходной проблемы. |
Почему top/left часто хуже для анимаций, чем transform?
|
Offsets меняют геометрию positioned element и могут запускать layout и paint. Transform обычно перемещает готовый слой на этапе compositing. Итог зависит от элемента, поэтому анимацию измеряют.
|
Почему box-shadow и filter могут быть дорогими?
|
Они требуют вычисления пикселей вокруг элемента, размытия и дополнительных offscreen surfaces. Большой blur radius и анимация на крупной области особенно дороги. Иногда дешевле использовать подготовленный asset или меньшую область. |
Что такое layout thrashing?
|
Это повторное чередование DOM writes и layout reads, вынуждающее браузер синхронно пересчитывать геометрию много раз за кадр. Проблема часто возникает в циклах. Чтения и записи нужно группировать. |
Как избежать layout thrashing?
|
Сначала прочитать необходимые размеры, затем пакетно изменить DOM. Для кадра использовать |
Почему чтение offsetWidth после записи стилей может быть проблемой?
|
После write вычисленные размеры становятся устаревшими. Чтение |
Как DevTools Performance помогает искать reflow/repaint?
|
Запись trace показывает scripting, style recalculation, layout, paint и compositing по кадрам. Можно открыть дорогой event, увидеть call stack и affected nodes. Paint flashing и Layers дополняют анализ. |
Что такое FPS?
|
FPS — число отображенных кадров в секунду. Низкий или нестабильный FPS заметен как рывки анимации и scrolling. Важно смотреть не только среднее, но и пропущенные кадры. |
Почему 60 FPS означает бюджет около 16.6ms на кадр?
|
Секунда делится на 60 интервалов: примерно |
Как requestAnimationFrame помогает с анимациями?
|
Callback вызывается перед следующим paint и синхронизирует обновление с refresh cycle. Браузер может приостанавливать его в фоновой вкладке. Тяжелая работа внутри callback все равно блокирует кадр. |
Modern CSS #
Junior #
Что такое CSS nesting?
|
Native nesting позволяет вкладывать relative selectors внутрь style rule. Оно уменьшает повторение context, но глубокая вложенность повышает specificity и связанность. Синтаксис и результат следует отличать от дополнительных возможностей Sass. |
Что такое :has()?
|
|
Что такое style queries?
|
Style container queries применяют rules по computed style container, прежде всего по custom properties. Это позволяет компоненту реагировать на semantic state контекста. Поддержку конкретного синтаксиса нужно проверять для целевых браузеров. |
Что такое logical properties?
|
Logical properties описывают flow-relative стороны: |
Middle #
Чем :is() отличается от :where()?
|
Обе pseudo-classes группируют selectors. Specificity |
Для чего нужны accent-color и color-scheme?
|
|
Как работают prefers-color-scheme и prefers-reduced-motion?
|
Эти media features отражают системные предпочтения пользователя. Первая помогает выбрать начальную theme, вторая — уменьшить необязательное движение. Reduced motion означает не «выключить все», а убрать потенциально проблемные эффекты, сохранив понятную обратную связь. |
Для чего нужны aspect-ratio и object-fit?
|
|
Что делают overscroll-behavior и scrollbar-gutter?
|
|
Когда использовать subgrid?
|
Перед применением нужно проверить поддержку целевых браузеров и fallback. Если выравнивание локальное, обычный grid проще и понятнее. |
CSS layout и component tasks #
Junior #
Практическая задача: сделайте CSS-only star rating display.
|
Если нужен только display, можно использовать custom property и overlay. Для интерактивного rating нужны настоящие controls, keyboard support и доступное имя.
Частая ошибка - сделать красивый виджет, но потерять accessibility. Для ввода рейтинга лучше использовать radio group или button group, а не только pseudo-elements. |
Middle #
Практическая задача: сверстайте responsive card grid без JavaScript.
|
Что проверяет: Grid, responsive layout, минимальные размеры, отсутствие layout shift.
На интервью важно объяснить, почему |
