60+ найкращих запитань та відповідей на співбесіді з CSS (2026)

Готуєтеся до співбесіди на CSS? Час удосконалити свої знання основ та не лише. Розуміння Співбесіда з CSS питання можуть виявити, наскільки глибоко кандидати розуміють структуру дизайну та логіку стилю.

Кар'єра в CSS-розробці відкриває двері до різноманітних можливостей, від дизайну фронтенду до адаптивних веб-додатків. Маючи технічний досвід, знання предметної області та сильні аналітичні навички, професіонали можуть продемонструвати передові навички, які цінують керівники команд та менеджери. Ці питання та відповіді допомагають розробникам-початківцям, розробникам середньої та старшої ланки впевнено та ефективно проходити співбесіди.

Спираючись на думки понад 85 фахівців, включаючи технічних керівників, менеджерів та експертів з найму, цей посібник зібрав перевірені практики проведення співбесід у різних галузях, забезпечуючи точність, релевантність та достовірність для всіх рівнів досвіду.

Запитання та відповіді на співбесіді з CSS

Найпопулярніші запитання та відповіді на співбесіді з CSS

1) Поясніть сучасний каскад CSS, включаючи @layer, специфічність та порядок джерел.

Каскад вирішує, яке правило «перемагає», коли кілька правил спрямовані на один і той самий елемент. Рішення приймається за важливістю ( !important ), походження (користувацький агент, користувач, автор), тоді порядок шарів від @layer, потім специфічність, і нарешті порядок джерел. Використання @layer дозволяє визначати передбачувані рівні, такі як скидання, базовий, компоненти та утиліти, щоб цілі групи правил перевизначали інші, не підвищуючи специфічність селекторів. Головною перевагою є зручність обслуговування; головним недоліком є ​​те, що неправильне впорядкування рівнів може приховувати помилки. Віддавайте перевагу селекторам класів з низькою специфічністю, резервуйте !important для цілеспрямованої політики та збереження зрозумілої архітектури.

Відповідайте з прикладами

@layer reset, base, components, utilities;
@layer reset { *,*::before,*::after{ box-sizing:border-box } }
@layer base { body{ font:16px/1.5 system-ui } }
@layer components { .btn{ background:var(--brand,#4b6fff); color:#fff } }
@layer utilities { .text-sm{ font-size:.875rem } }

👉 Безкоштовне завантаження PDF: Запитання для співбесіди на CSS


2) Чим відрізняються контейнерні запити від медіа-запитів, і де б ви використовували кожен з них?

Контейнерні запити реагують на розмір або стиль містить елемент, що робить компоненти самосвідомими та придатними для повторного використання в різних контекстах. Медіа-запити відповідають на огляд або характеристики пристроїв та блиск для глобальних змін макета. Контейнерні запити дозволяють карткам, віджетам та вкладеним модулям адаптуватися локально; медіа-запити залишаються ідеальними для навігації по всьому сайту або змін оболонки. Переваги контейнерних запитів включають точнішу деталізацію та менше глобальних точок зупинки; недоліки включають налаштування через container-type та ретельний вибір меж.

Різниця між (таблиця порівняння)

Фактор Медіа-запити Запити контейнерів
Тригер Функції області перегляду Розмір або стиль контейнера
Сфера На всю сторінку Компонентно-локальний
Setup Нічого поза питанням Вимагає container-type / необов'язкове ім'я
Найкраще для Глобальні точки зупинки Варіанти карток або віджетів

Відповідайте з прикладами

/* Declare a query container */
.card-grid { container-type: inline-size; }
/* Component-level breakpoint */
@container (min-width: 32rem) {
   .card { display:grid; grid-template-columns: 2fr 3fr; gap:1rem; }
}

3) Які характеристики та переваги :has(), і як це порівнюється з :is() та :where() ?

Реляційний псевдоклас :has() вибирає елемент на основі його нащадків або наступного шаблону, що дозволяє стилізувати батьківський стан без JavaСкрипт. Це потужний інструмент для груп перевірки форм, станів навігації або перемикачів щільності. Натомість, :is() та :where() спростити довгі списки селекторів; :where() не має нульової специфічності, тоді як :is() сприяє специфічності його найконкретнішого аргументу. Переваги :has() включати контекстне стилізування та чистішу розмітку; недоліки включають потенційні проблеми з продуктивністю, якщо використовувати з необмеженими селекторами. Вузько охоплюйте його та поєднуйте з класами або атрибутами для передбачуваності.

Відповідайте з прикладами

/* Emphasize label when any input inside is invalid */
.form-group:has(input:invalid) label { color:#b00020; }

/* Compact nav if there are many items */
.nav:has(> li:nth-child(n+8)) { font-size:.9rem }

/* Specificity control helpers */
:is(h1,h2,h3){ margin-block:.75em }
where(.prose h1,.prose h2){ line-height:1.2 }

4) Де б ви застосували користувацькі властивості CSS для темізації, і які їхні переваги та недоліки?

Користувацькі властивості CSS переносять значення через каскад, успадковуються природним чином та вирішуються під час виконання, що робить їх ідеальними для тем, режимів щільності та токенів дизайну. Вони дозволяють перемикатися між темним режимом або змінювати його.ping колірні системи без перебудови ресурсів. Переваги включають динамічні оновлення, спільне розташування з компонентами та сумісність з @layerДо недоліків належать непрямість для статичних аналізаторів та необхідність розробки резервних варіантів. Використовуйте токени кореневого рівня для глобальної семантики та токени компонентного рівня для варіантів, а також підтримуйте стабільність імен для забезпечення довгострокової підтримки.

Відповідайте з прикладами

:root { --bg: #fff; --fg: #111; --radius: .5rem; }
@media (prefers-color-scheme: dark){
   :root { --bg:#0b0d10; --fg:#e7edf3; }
}
.card { background:var(--bg); color:var(--fg); border-radius:var(--radius); }

5) Яка система макета підходить для якої задачі: Flexbox, Grid чи Subgrid?

Flexbox оптимально підходить для одновимірний вирівнювання та розподіл вздовж однієї осі, Grid чудово справляється з двовимірний розміщення та явні track-керування, а Subgrid дозволяє дочірнім елементам успадковувати батьківську сітку tracks для послідовного вирівнювання між вкладеними компонентами. Вибір правильної системи зменшує кількість перевизначень та покращує читабельність. Поширеним шаблоном є Grid для фреймів сторінок та панелей інструментів, Flexbox для панелей інструментів та списків мікросхем, а також Subgrid для вирівнювання внутрішніх елементів, таких як метадані картки, до зовнішніх стовпців.

Типи та відмінності між (таблиця порівняння)

Використовуйте Case Flexbox сітка підсітка
Розмір 1-D 2-D 2-D через успадкований tracks
міцність Розподіл, вирівнювання Відверті ділянки, що повторюються tracks Вирівнювання між компонентами
Setup Minimal Визначити рядки/стовпці Потрібна батьківська сітка
Приклад Навігаційні панелі, таблетки Галерея, інформаційні панелі Нижні колонтитули карток вирівняні по сітці сторінки

Відповідайте з прикладами

.layout { display:grid; grid-template-columns: 1fr 3fr; gap:1rem; }
.card-meta { display:grid; grid-template-columns: subgrid; grid-column: 1 / -1; }

6) Чи покращують логічні властивості інтернаціоналізацію? Поясніть переваги та недоліки.

Логічні властивості замінюють фізичні напрямки, такі як ліворуч та праворуч, на терміни, що відносяться до потоку, такі як «вбудований» та «початок або кінець блоку». Це дозволяє одному файлу стилів адаптуватися до мов з письмом справа наліво та вертикальних режимів письма без правил розгалуження. Перевагами є краща глобалізація, зменшення дублювання правил та більш стійкі компоненти. Компроміси включають ментальний зсув під час впровадження та випадкові прогалини у властивостях «довгого хвоста». margin-inline, padding-block та inset-inline-start для інтервалів та розташування для досягнення узгодженості макетів у різних локалях.

Відповідайте з прикладами

.alert { padding-inline:1rem; border-inline-start:4px solid currentColor; }
[dir="rtl"] .breadcrumb { float:inline-end; }

7) Коли б ви використовували clamp() та сучасні одиниці перегляду ( svh, lvh, dvh ) для типу рідини та інтервалу?

Скористайтеся кнопкою clamp(min, preferred, max) коли вам потрібні значення, які плавно масштабуються зі зростанням області перегляду, але ніколи не перевищують розумні межі. Це ідеально підходить для типографіки, відступів та розділів героя. Сучасні одиниці області перегляду враховують інтерфейс мобільного браузера Chrome, забезпечуючи стабільну висоту для повноекранних розділів. Переваги включають меншу кількість медіа-запитів, послідовний ритм та покращену доступність у поєднанні з remНедоліком є ​​необхідність тестування на різних пристроях для підтвердження візуального наміру та безпечних цільових зон дотику.

Відповідайте з прикладами

:root { --step-0: clamp(1rem, 1.2vw + .9rem, 1.25rem); }
h1 { font-size: clamp(1.75rem, 4vw + 1rem, 2.5rem); }
.hero { min-height: 100dvh; padding-block: clamp(1rem, 3vw, 3rem); }

8) Що таке контекст стекування, і як z-index та фактори позиціонування його створюють або ізолюють?

Контекст стекування — це ізольована область малювання, в якій порівняння z-index проводяться лише між братами та сестрами в межах одного контексту. Нові контексти виникають з кореневого елемента, позиціонованих елементів з z-index окрім auto, а також певні властивості, такі як transform, opacity < 1, filter та position: fixedРозуміння їх пояснює поширені проблеми «z-index не працює», коли дочірній елемент не може перевершити контент поза його контекстом. Перевагою є інкапсуляція; небезпека полягає в випадковій ізоляції, яка запобігає навмисному накладенню.

Відповідайте з прикладами

.header { position:relative; z-index:10; }
.modal { position:fixed; inset:0; z-index:1000; }
.card { transform: translateZ(0); /* new stacking context */ }

9) Чи готове вкладення нативного CSS до роботи, і як ви перенесете його з препроцесорів?

Вбудоване введення широко підтримується та зменшує повторення шляхом спільного розташування зв'язків правил, зберігаючи при цьомуping селектори короткі. Міграція повинна надавати пріоритет компонентам, замінюючи глибокі ланцюжки нащадків одним або двома рівнями вкладеності та видаляючи конструкції, доступні лише для препроцесорів, такі як міксини. Переваги включають менші пакети та покращену карту DevTools.ping; недоліки включають спокусу надмірного вкладення, що збільшує специфічність і перешкоджає повторному використанню. Встановіть захисні бар'єри: обмежте глибину, збережіть гачки на основі класів і поєднуйте з @layer для керування порядком перевизначення.

Відповідайте з прикладами

.card {
    display:grid; gap:.75rem;
    & h3 { margin-block:.5rem; }
    & .actions { display:flex; gap:.5rem; }
    & .actions > button:hover { text-decoration:underline; }
}

10) Чи можна використовувати запити в контейнерному стилі, і які їхні практичні переваги?

Запити стилів дозволяють компонентам адаптуватися до обчислених стилів їхнього контейнера, таких як токен щільності або варіант теми, без протягування додаткових імен класів через DOM. Це дозволяє системам дизайну перемикатися між компактним і зручним режимами або світлими та темними акцентами для кожного контейнера. Перевагами є роз'єднані компоненти та чіткіші межі; недоліками є необхідність ретельного найменування токенів, документованих резервних варіантів та навмисного налаштування контейнера. Використовуйте їх для вираження стану як даних, а не як крихких структурних селекторів.

Відповідайте з прикладами

/* Container emits a style signal */
.panel { --density: compact; container-type:inline-size; }

/* Child adapts when the container declares compact density */
@container style(--density: compact) {
    .item { padding:.5rem; gap:.5rem; }
}

11) Які фактори продуктивності важливі для CSS, і як уникнути збоїв макета?

Продуктивність CSS залежить від того, як часто браузер повинен перераховувати стиль, обчислити розташування, та перефарбувати або складовою шари. Зміна макета відбувається, коли чергування читання та запису властивостей, що впливають на макет, призводить до повторного перекомпонування. Дисциплінований підхід полягає в мінімізації складності селекторів, збереженні низької специфічності та анімації лише тих властивостей, які зручні для композитора. Пакетне читання DOM перед записом та використання обмеження радіуса вибуху.

Відповідайте з прикладами

  • Віддавайте перевагу transform та opacity для анімації; уникайте анімації width/height/top/left.
  • Застосовувати content-visibility: auto до закадрових розділів та надання contain-intrinsic-size.
  • Скористайтеся кнопкою will-change економно використовувати шари лише для тривалих анімацій.
  • Замініть глибокі селектори-нащадки на однокласові хуки, щоб зменшити перерахунок стилів.
.article-preview { content-visibility: auto; contain-intrinsic-size: 600px 400px; }
.fab { transition: transform .25s, opacity .25s; will-change: transform; }

12) Які функції CSS підтримують доступність "з коробки"? Наведіть переваги та приклади.

CSS не може замінити семантичний HTML чи ARIA, але він покращує фокусна видимість, безпека руху та стратегії контрасту, :focus-visible псевдоклас виявляє фокус, коли виявляється модальність клавіатури, запобігаючи візуальному шуму для користувачів миші, зберігаючи водночас підказки для користувачів клавіатури. Медіа-функції, такі як prefers-reduced-motion дозволяють використовувати шанобливі резервні шаблони, а ретельний дизайн кольорових токенів забезпечує достатній контраст. Перевагою є інклюзивність значень за замовчуванням для різних налаштувань користувача; обмеження полягає в тому, що семантика та навігація за допомогою клавіатури повинні забезпечуватися розміткою та скриптами.

Відповідайте з прикладами

:focus-visible { outline: 3px solid Highlight; outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
    .parallax, .video-bg { animation: none; transition: none; }
}

13) Різні способи включення CSS та переваги чи недоліки кожного підходу.

Існує кілька стратегій включення, кожна з яких має окремі характеристики, що впливають на кешування, критичний шлях та зручність обслуговування. Зовнішні таблиці стилів розділяють проблеми та використовують переваги кешування браузера; вбудовані <style> підходить для критично важливих правил, які мають завантажуватися разом з HTML; вбудовано style="" Атрибути мають найвищий пріоритет, але шкодять повторному використанню та підвищують специфічність. Вибір правильного типу зменшує дублювання корисного навантаження, зберігаючи при цьому ергономіку розробника.

Переваги проти недоліків (порівняльна таблиця)

Метод Переваги Недоліки Типове використання
Зовнішня таблиця стилів Кешування браузера; спільне для всіх сторінок Додатковий запит HTTP Глобальна система дизайну
В лінію <style> Усуває запити; ідеально підходить для критично важливого CSS Важче керувати у великих масштабах Стилі для розміщення у верхній частині сторінки
В лінію style="" Негайна та найвища специфічність Неможливо повторно використовувати; шумний HTML Одноразові зміни

Відповідайте з прикладами

<link rel="stylesheet" href="/uk/assets/app.css" />
<style>/* minimal critical rules for LCP elements */</style>
<div class="btn" style="--danger: #b00020">Delete</div>

14) Яка різниця між relative, absolute, fixed та sticky позиціонування? Надайте рекомендації щодо варіантів використання.

Позиціонування визначає, як елементи розміщуються в потоці та як вони взаємодіють зі скролінгом та предками. relative зберігає природний потік, але зміщує візуальну рамку; часто використовується для встановлення контексту прив'язки. absolute видаляє елемент з потоку, позиціонуючи його відносно найближчого позиціонованого предка, що забезпечує точність, але знижує швидкість реагування. fixed закріплює елементи до області перегляду, що ідеально підходить для постійних панелей, але має враховувати екранні клавіатури та безпечні області. sticky перемикається між статичним та фіксованим режимами залежно від порогів прокручування, надаючи заголовки розділів та внутрішньосторінкові індекси.

Відповідайте з прикладами

.badge-anchor { position: relative; }
.badge { position: absolute; inset: -6px -6px auto auto; }
.header { position: sticky; top: 0; background: var(--bg); }
.toast { position: fixed; inset: auto 1rem 1rem auto; }

15) Які фактори формують зручну для підтримки архітектуру CSS (BEM, ITCSS, утиліти, шари), і який життєвий цикл стилю компонента?

Підтримувана архітектура балансує специфічність дисципліни, передбачуваний нашарування, і стабільний іменуванняBEM забезпечує явні перехоплення, ITCSS упорядковує правила від низькорівневих скидань до високорівневих утиліт, підходи, що враховують утиліти, пришвидшують ітерацію з обмеженими примітивами, та @layer формалізує порядок перевизначення в кодовій базі. Життєвий цикл компонента зазвичай починається з визначення токена, переходить до базових правил та правил компонентів, додає варіанти та стани, і завершується політиками застарівання, які запобігають критичним змінам. Перевагою є узгоджена поведінка в різних командах; компромісом є попереднє планування та управління.

Відповідайте з прикладами

  • Жетони в :root (інтервал, колір, радіус).
  • Компоненти, розміщені в @layer components з однокласовими селекторами.
  • Варіанти через атрибути даних або запити в стилі контейнера для ясності.
@layer reset, base, components, utilities;
@layer components { .card { border-radius: var(--radius-2); } }

16) Як Shadow DOM впливає на CSS scoreping, і які існують різні способи стилізації деталей?

Тіньовий DOM інкапсулює розмітку та стилізацію, запобігаючи випадковому витоку та забезпечуючи стабільність компонентів. Автори можуть навмисно оголювати поверхні: ::part() цільові елементи, експортовані компонентом, тоді як ::slotted() стилі, що призначають вузли light-DOM у слотах. Переваги включають надійну інкапсуляцію та передбачувані поверхні тематизації; недоліки включають обмежений доступ до внутрішніх компонентів, якщо розробник компонентів не надає відповідні деталі, та необхідність документування цих деталей для споживачів.

Відповідайте з прикладами

/* Theme an exposed component part */
custom-rating::part(star) { color: gold; }
file-card::slotted(img) { border-radius: .5rem; }

17) Які характеристики моделі блоків CSS і чому box-sizing: border-box має значення?

Коробчаста модель описує, як загальний розмір елемента визначається з вміст, відступи, межі та marginЗа замовчуванням content-box, оголошено width виключає відступи та рамки, що може призвести до несподіванок переповнення та складних обчислень. border-box включає відступи та рамки в межах заявленої ширини та висоти, що робить математику сітки та розміри компонентів більш передбачуваними. Перевагою є простіші ментальні моделі та менше помилок макета; недоліком є ​​те, що змішування моделей всередині системи може заплутати учасників. Стандартизуйте в корені та відкрито документуйте винятки.

Відповідайте з прикладами

*, *::before, *::after { box-sizing: border-box; }
.card { width: 22rem; padding: 1rem; border: 1px solid #ddd; }

18) Де б ви використовували @supports для прогресивного вдосконалення, і які його переваги?

@supports дозволяє виявляти ознаки в CSS, дозволяючи базовій лінії функціонувати скрізь з умовними покращеннями, де це можливо. Цей шаблон знижує ризик під час впровадження сучасних функцій, таких як контейнерні запити, :has(), або підсітку. Основними перевагами є плавна деградація та чіткіші шляхи міграції; недоліками є збереження подвійних шляхів коду протягом певного часу. Спочатку структуруйте базову поведінку, а потім обгорніть розширену поведінку в цільові @supports блоки, щоб запобігти регресу застарілих середовищ.

Відповідайте з прикладами

.card { display: block; }
@supports (display: grid) {
     .card { display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; }
}

19) Які одиниці CSS слід обрати, і яка між ними різниця?

Вибір одиниць вимірювання впливає на масштабування, читабельність та доступність. rem масштабується разом із розміром кореневого шрифту, що робить його ідеальним для глобального типу та інтервалів; em масштабується разом з поточним елементом, що корисно всередині компонентів, але може неочікувано ускладнюватися. ch відображає ширину гліфа «0» і чудово підходить для вимірювання (довжини рядка). px вирівнюється за пікселями пристрою та безпечний для тонких ліній, але не відповідає налаштуванням користувача. Одиниці вимірювання висоти рядка, такі як lh та rlh допомагають підтримувати вертикальний ритм, прив'язуючи інтервали до типографічної сітки.

Відповідайте з прикладами

  • Скористайтеся кнопкою max-width: 65ch для читабельних абзаців.
  • Встановити глобальний інтервал як кратний rem поважати вподобання користувача.
  • Скористайтеся кнопкою em для внутрішніх компонентів, таких як кнопки-значки, що масштабуються разом із розміром шрифту.
.prose { max-width: 65ch; margin-inline: auto; }
.btn { padding-inline: 1em; }

20) Чи допомагають лічильники CSS зі структурованим контентом, і які їхні переваги та недоліки?

Лічильники CSS забезпечують автоматичну нумерацію без зміни семантичного HTML, що цінно для заголовків, рисунків та юридичних документів. Переваги включають чітку розмітку та гнучкість представлення в різних локалізаціях або розділах. Недоліками є потенційні прогалини в доступності, якщо нумерація передає суттєве значення, яке не відображається в структурі DOM або не оголошується допоміжними технологіями. Використовуйте лічильники для презентаційної нумерації, забезпечуючи правильність та зручність навігації по базовій ієрархії.

Відповідайте з прикладами

article { counter-reset: h2; }
h2::before { counter-increment: h2; content: "Section " counter(h2) ". "; }
figure { counter-increment: fig; }
figcaption::before { content: "Figure " counter(fig) ": "; }

21) Коли слід анімувати за допомогою CSS, і які властивості найбезпечніші для продуктивності?

Анімації є найстійкішими, коли вони працюють на зручних для композитора властивостях, що уникають перезавантаження та перемальовування. CSS чудово підходить для декларативних переходів, керованих станами, де браузер може оптимізувати планування кадрів. Найбезпечніший вибір: transform та opacity, які зазвичай виконуються в потоці компонування та мінімізують роботу основного потоку. Використовуйте CSS для мікровзаємодій, переходів при наведенні курсора та простих ефектів входу. Уникайте анімації властивостей, що впливають на макет, таких як width, height, top та left оскільки вони ініціюють перерахунок макета. Коли зміни геометрії є важливими, розгляньте ілюзії на основі трансформації або поєднання ніжних пар max-height переходи з керуванням переповненням та ретельним резервним копіюванням для забезпечення доступності.

Відповідайте з прикладами

.dialog { transform: translateY(8px); opacity: 0; }
.dialog[open] {
   transform: translateY(0);
   opacity: 1;
   transition: transform .2s ease, opacity .2s ease;
}
@media (prefers-reduced-motion: reduce) {
   .dialog { transition: none; }
}

22) Чи може CSS допомогти з адаптивними зображеннями, і які є різні способи підходу до цього?

HTML володіє вбудованим вибором зображень через srcset та sizes, але CSS залишається важливим для декоративних зображень, художнього оформлення фонів та підбору об'єктів. Використовуйте image-set() надати кілька роздільних здатностей для фонових зображень і віддати перевагу object-fit та object-position щоб контролювати замінювані елементи в їхніх рамках. Поєднуйте їх із запитами контейнерів або медіа, щоб адаптувати кадрування, щільність або фокусні точки. Перевагою є точний візуальний контроль без надмірного використання розмітки; недоліком є ​​те, що фонові зображення CSS не мають внутрішнього узгодження розміру та не оголошуються допоміжними технологіями, тому зображення контенту повинні залишатися в HTML.

Переваги проти недоліків (порівняльна таблиця)

Підхід характеристика Переваги Недоліки Типове використання
HTML srcset/sizes Внутрішній відбір Правильна семантика; найкраща продуктивність Потрібні зміни розмітки Зображення контенту
CSS image-set() Набори роздільної здатності фону Легка заміна на точку зупинки Без внутрішнього розміру Декоративні фони
object-fit / position Box контроль стримування Постійний урожайping Не для фонових зображень Мініатюри, аватари

Відповідайте з прикладами

.hero {
	background-image: image-set(url(bg-1x.jpg) 1x, url(bg-2x.jpg) 2x);
	background-size: cover;
}
.thumb { width: 240px; height: 160px; object-fit: cover; object-position: 50% 40%; }

23) Є JavaЧи можливий темний режим без скриптів, і які фактори роблять його надійним?

A JavaТемний режим без скриптів можливий шляхом поєднання користувацьких властивостей з prefers-color-scheme медіа-функція та необов'язковий атрибут HTML для перевизначення користувачем. Визначте семантичні токени в корені, надайте темні варіанти в медіа-запиті та дозвольте [data-theme] перевизначення для поваги до явного вибору користувача або брендингу підприємства. Такий підхід мінімізує складність, зменшує мерехтіння та зберігає каскад авторитетним. Обмеженням є залежність від системних налаштувань, коли явне перевизначення відсутнє. Задокументуйте токени, забезпечте достатню контрастність та протестуйте контури та стани фокусування в обох режимах.

Відповідайте з прикладами

:root { --bg: #ffffff; --fg: #0b0d10; --accent: #4b6fff; }
@media (prefers-color-scheme: dark) {
:root { --bg:#0b0d10; --fg:#e7edf3; --accent:#8aa4ff; }
}
[data-theme="light"] { --bg:#ffffff; --fg:#0b0d10; }
[data-theme="dark"] { --bg:#0b0d10; --fg:#e7edf3; }
body { background: var(--bg); color: var(--fg); }
a { color: var(--accent); }

24) Чи є недоліки глибокого вкладення селекторів та високої специфічності, і які переваги має підхід з низькою специфічністю?

Глибоке вкладення та висока специфічність роблять стилі крихкими, уповільнюють рефакторинг та збільшують ризик ненавмисного перевизначення. Такі селектори тісно пов'язують CSS зі структурою документа, що збільшує витрати на обслуговування під час розвитку розмітки. Підхід з низькою специфічністю сприяє однокласовим перехопленням, плоскій архітектурі та @layer упорядкування для передбачуваного керування перевизначеннями. Переваги включають чіткіше визначення власності, швидший рендеринг завдяки простішому зіставленню та легшу композицію між командами. Встановіть обмеження на глибину вкладеності, уникайте кваліфікації класів з іменами елементів, коли це непотрібно, та надайте утиліти для евакуації.

Відповідайте з прикладами

/* Fragile: structure-dependent */
.main .sidebar .card > h3.title { ... }

/* Resilient: single-class hook, layer-controlled */
@layer components { .card-title { ... } }

25) Яка методологія — BEM, ITCSS чи utility-first — підходить різним командам, і які її переваги та недоліки?

Вибір методології залежить від розміру команди, культури оглядів та волатильності продукту. ДОБРЕ надає чіткі, зрозумілі гачки, що масштабуються у великих командах. ITCSS організовує кодову базу від низькорівневих скидань через об'єкти та компоненти до утиліт, узгоджуючи це з каскадом. Утиліта на першому місці пришвидшує доставку за допомогою обмежених примітивів та надає перевагу композиції над користувацькими селекторами. Гібриди є поширеними: ITCSS для впорядкування, BEM для найменування там, де це необхідно, та утиліти для одноразових налаштувань. Компроміси включають детальність (BEM), попереднє планування (ITCSS) та потенційне поширення класів (утиліта перш за все).

Відмінності (порівняльна таблиця)

Метод характеристика Переваги Недоліки Найкраще підходить
ДОБРЕ .block__elem – найменування модів Передбачувані гачки Докладні селектори Великі команди, системи проектування
ITCSS Багатошарова архітектура Очистити порядок заміни Планування накладних витрат Багатокомандні монорепозиторії
Утиліта на першому місці Atomкласи інтелектуальної взаємодії Швидкість, послідовність Ризик відтоку класу Швидке прототипуванняping, програми

26) Поясніть життєвий цикл токенів пробілів та типографіки від дизайну до коду на прикладах.

Життєвий цикл токена починається під час проектування з вибору масштабу, коефіцієнтів та цільових показників доступності. Вони стають іменованими, версіонованими користувацькими властивостями, що представляють семантику. Типи (наприклад, --space-2, --font-scale-1 ), а не сирі значення. Токени перетворюються на базові стилі, потім на компоненти та варіанти, і зрештою застарівають або перенаправляються через псевдоніми в міру розвитку систем. Переваги включають послідовний ритм, менші відмінності та покращену кросплатформну парність; недоліки включають початкові накладні витрати на управління та необхідність чіткої документації. Ставтеся до токенів як до публічних API: визначайте діапазони, зіставляйте їх з інструкціями з використання та надавайте примітки щодо міграції.

Відповідайте з прикладами

:root{
	--space-1:.25rem; --space-2:.5rem; --space-3:1rem;
	--font-0:1rem; --font-1:1.125rem; --font-2:1.25rem;
}
.card{ padding: var(--space-3); }
.card h2{ font-size: var(--font-2); margin-block: var(--space-2); }

/* deprecation alias */
:root{ --space-small: var(--space-2); }

27) Як робити :focus-visible, :focus-within та :target відрізняються, і які переваги надає кожен з них?

Ці селектори стосуються різних характеристик взаємодії та навігації. :focus-visible відображає фокус лише тоді, коли спосіб введення пропонує навігацію за допомогою клавіатури, зменшуючи розсіяністьtracкільця для користувачів миші, підтримуючи при цьому доступність. :focus-within збігається з контейнером, коли будь-який нащадок має фокус, що дозволяє групове підсвічування для композитних елементів, таких як поля форми. :target відповідає елементу, на який посилається URL фрагмент, що дозволяє використовувати посилання для пропуску та навігацію на сторінці без скриптів. Продумано поєднані, вони покращують орієнтацію, зменшують когнітивне навантаження та підтримують ефективні робочі процеси з клавіатурою.

Відповідайте з прикладами

:focus-visible { outline: 2px solid Highlight; outline-offset: 2px; }
.field:focus-within { box-shadow: 0 0 0 3px color-mix(in oklab, currentColor 30%, transparent); }
:target { scroll-margin-top: 6rem; }

28) Які переваги та недоліки content-visibility та обмеження CSS у великих документах?

content-visibility: auto відкладає рендеринг елементів поза екраном, доки вони не наблизиться до області перегляду, що значно знижує початкові витрати на рендеринг для довгих каналів. Додаткове стримування ( contain: layout paint style ) обмежує вплив піддерева на решту сторінки, зменшуючи область перекомпонування та пришвидшуючи повторні оновлення. Перевагами є покращена швидкість реагування та зменшення використання пам'яті; недоліками є потенційні спливаючі ефекти, якщо внутрішні розміри невідомі, та складність, коли JavaСкрипт повинен вимірювати розміри. Зменште це, надавши contain-intrinsic-size і вимірювання лише за необхідності.

Відповідайте з прикладами

.feed-item{
	content-visibility: auto;
	contain-intrinsic-size: 600px 400px; /* reserve space to prevent layout shift */
	contain: layout paint style;
}

29) Як створити адаптивну сітку з мінімальними точками зупинки за допомогою minmax() та auto-fit/auto-fill?

Стійкого макета можна досягти, визначивши гнучкі tracks, що розширюються до максимальної ширини, а потім автоматично переносяться. repeat(auto-fit, minmax(min, 1fr)) створює стільки стовпців, скільки поміститься, згортаючи їх порожніми tracks, щоб уникнути незручних прогалин. Це зменшує залежність від явних точок зупинки, зберігаючи гармонійну щільність на різних розмірах екрана. Такий підхід ідеально підходить для галерей, карток та списків продуктів. Забезпечте зручні мінімуми (наприклад, 16rem ) та покладаються на інтервал між проміжками для підтримки ритму.

Відповідайте з прикладами

.gallery{
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
    gap: 1rem;
}

30) Які фактори визначають, коли робити вибір gap порівняно з полями для інтервалів між елементами?

gap це інтервал з урахуванням потоку, який працює безпосередньо з Flexbox та Grid, застосовуючи симетричний поділ без граничних випадків, що призводять до згортання відступів. Він ідеально підходить для внутрішньокомпонентний інтервали, оскільки вони не впливають на вирівнювання першого/останнього дочірнього елемента та не потребують змін напрямку в макетах справа наліво. Поля є кращими для зовнішній інтервали, що є частиною публічного API компонента, або коли інтервали мають взаємодіяти з контекстами, відмінними від Flex/Grid. Вибирайте на основі області застосування, власності та семантики макета, щоб уникнути несподіваних перекриттів та мінімізувати правила перевизначення.

Відмінності (порівняльна таблиця)

критерій gap Поля
Сфера Всередині контейнера макета Зовнішній контакт між братами та сестрами та сусідами
Напрямок Логічний та симетричний Може вимагати коригування RTL
Поведінка, що руйнується Не підтримується Можливе падіння маржі
Найкраще використання Інтервал між дітьми Flex/Grid Зовнішній інтервал компонентів та їхнє розташуванняtracts

Відповідайте з прикладами

.toolbar{ display:flex; gap:.5rem; } /* internal spacing */
.card{ margin-block: 1rem; } /* external spacing contract */

31) Які недоліки виникають із залежністю від !important, а які є безпечніші альтернативи?

Надмірне використання !important обходить природний життєвий цикл каскаду, що приховує намір, блокує легітимні перевизначення та змушує майбутніх учасників ще більше підвищувати специфічність. Це також підриває тестованість, оскільки правила стають невразливими до впорядкування та @layer стратегії. Професійна альтернатива полягає в розробці передбачуваних шляхів перевизначення: зменшення специфічності селекторів, розміщення політик на спеціальному рівні утиліт або переупорядкування джерел за допомогою @layer а не перетворювати декларації на зброю. Резерв !important для навмисних випадків, зумовлених користувачем, таких як утиліти з високою контрастністю або примусовою видимістю, які діють як задокументований аварійний люк.

Відповідайте з прикладами

/* Deliberate, documented utility only */
@layer utilities {
	.sr-only { position:absolute !important; width:1px !important; height:1px !important; overflow:hidden !important; }
}

/* Prefer layer order instead of !important */
@layer base, components, utilities;
@layer utilities { .hidden { display:none; } }

32) Яких типів селекторів слід уникати з точки зору продуктивності або зручності обслуговування, і чому?

Селектори, які щільно прив'язуються до глибини документа або атрибутів по всій DOM, є ризикованими. Довгі ланцюжки нащадків збільшують вартість зіставлення та створюють крихкі залежності від розмітки. Широкі селектори атрибутів, такі як [class*="btn"] or [data-*] без scoping може сканувати великі піддерева. Надмірно кваліфіковані селектори, такі як ul.nav > li > a.link зменшити можливість повторного використання та ускладнити перевизначення. Підхід, що забезпечує підтримку, надає перевагу однокласовим гачкам, атрибутам стану з чітким підходом.tracтс (наприклад, [data-state="open"] ), та короткі стосунки ( > , + ) всередині меж компонентів. Це покращує читабельність, зменшує каскадні конфлікти та пришвидшує рефакторинг.

Відповідайте з прикладами

/* Fragile and slow */
.main .sidebar .list .item > a[href*="/products"] { ... }

/* Resilient */
.nav { display:flex; gap:.5rem; }
.nav__link { ... }
[data-state="open"] .nav__link--active { text-decoration: underline; }

33) Коли слід вибирати @layer Утиліти проти варіантів компонентів, і які їхні переваги?

Експрес-утиліти одноразові коригування такі як інтервали, відображення або вирівнювання, які слід перевизначити без підвищення специфічності. Варіанти компонентів виражають повторювані стани або режими що належать до API компонентів. Утиліти проявляють себе чудово під час композиції в коді програми, оскільки вони передбачувані та не потребують редагування таблиці стилів компонента. Варіанти є кращими, коли той самий стан повторюється, і їх необхідно документувати та тестувати як частину системи проектування. Збалансована архітектура розміщує утиліти наприкінці порядку шарів і зберігає варіанти компонентів низькоспецифічними в межах шару компонентів.

Відповідайте з прикладами

@layer reset, base, components, utilities;

/* Variant: part of the API */
@layer components {
	.btn[data-variant="primary"] { background: var(--brand-600); color: #fff; }
}

/* Utility: composition escape hatch */
@layer utilities {
	.mt-4 { margin-block-start: 1rem; }
	.inline { display:inline; }
}

34) Чи може Grid повністю замінити використання Flexbox, чи є причини зберегти обидва, зумовлені відмінностями?

Grid та Flexbox вирішують ортогональні задачі. Grid забезпечує двовимірне керування з явним track-визначень, що спрощує роботу зі складними фреймами сторінок, панелями інструментів та галереями карток. Flexbox чудово справляється з розподілом по одній осі, власним розміром вздовж головної осі та вирівнюванням у рядках або стовпцях, що ідеально підходить для панелей інструментів, меню та чіпів. Спроба примусово використовувати Grid скрізь жертвує ергономічною поведінкою вирівнювання, тоді як примусове використання Flexbox для макрокомпонування призводить до крихких обгорток. Зрілі системи навмисно поєднують обидва типи, іноді в межах одного компонента, вибираючи механізм, характеристики якого відповідають проблемі.

Відмінності (порівняльна таблиця)

критерій сітка Flexbox
Розмір Двовимірний tracks Одновимірний потік
міцність Явні області, прогалини, підсітка Розподіл, вирівнювання, переупорядкування
Найкраще використання Фрейми сторінок, панелі інструментів Панелі інструментів, навігація, списки чіпів

Відповідайте з прикладами

.frame { display:grid; grid-template-columns: 1fr 3fr; gap: 1rem; }
.toolbar { display:flex; align-items:center; gap:.5rem; }

35) Які переваги та недоліки використання aspect-ratio проти хаків з паддингом?

aspect-ratio пропонує декларативний, самодокументований спосіб підтримки форм для карток, медіафайлів та мініатюр без елементів-обгорток або псевдоелементних хаків. Він чітко інтегрується з підбором об'єктів та передбачувано працює в макетах Grid та Flex. Основними недоліками є прогалини в застарілих браузерах у старих середовищах та необхідність перегляду попередніх CSS на основі хаків. Хаки з відступами залишаються резервним варіантом для дуже старих рушіїв, але збільшують складність DOM та зменшують чіткість. Віддайте перевагу aspect-ratio для зручності обслуговування та заблокуйте його за допомогою @supports лише якщо застаріле покриття єtracсправді потрібно.

Відповідайте з прикладами

.thumb { aspect-ratio: 16 / 9; object-fit: cover; }
@supports not (aspect-ratio: 1) {
    .thumb-wrap { position: relative; }
    .thumb-wrap::before { content:""; display:block; padding-top:56.25%; }
    .thumb { position:absolute; inset:0; }
}

36) Як би ви створили стійкий липкий заголовок, який би враховував безпечні області та мобільні області перегляду?

Стійкий жатка врівноважує position: sticky для анкерів на рівні секції з position: fixed лише тоді, коли дизайн вимагає глобальної персистенції. Вставки безпечних областей запобігають перекриттю з інтерфейсом системи на пристроях з вирізом, а сучасні одиниці перегляду, такі як dvh Уникайте згортання, коли браузер Chrome показує або приховує елементи. Стратегія включає призначення чіткого контексту стекування, резервування місця для запобігання зміщенню макета та надання налаштувань руху для ефектів входу. Тестування на різних клавіатурах та в альбомній орієнтації є критично важливим, оскільки віртуальні клавіатури можуть перекривати фіксовані елементи, якщо їх не обробляти.

Відповідайте з прикладами

.header {
	position: sticky;
	top: 0;
	padding-top: env(safe-area-inset-top);
	background: var(--bg);
	z-index: 100;
	box-shadow: 0 1px 0 rgba(0,0,0,.08);
}
main { min-height: 100dvh; scroll-padding-top: 4rem; }

Міркування (коротка таблиця)

Фактор Рекомендація
Безпечні зони Скористайтеся кнопкою env(safe-area-inset-*)
Вигляд Віддавайте перевагу dvh для областей повної висоти
Z-індекс Створіть одну шкалу накладання та задокументуйте її

37) Яка різниця між масштабуванням щільності та масштабуванням розміру компонентів, і коли слід використовувати кожен з них?

Масштабування щільності змінює інтервали, прогалини та висота рядка поки кіping розміри шрифтів залишаються постійними, що дозволяє створювати компактні, зручні або просторі варіанти без зміни типографської ієрархії. Масштабування розміру змінює сам типографічний масштаб, зміщуючи заголовки, основний текст та елементи керування на більші або менші кроки. Використовуйте масштабування щільності для корпоративних інтерфейсів, де щільність інформації змінюється залежно від завдання; використовуйте масштабування розміру, щоб реагувати на відстань до пристрою, потреби доступності або вимоги бренду. Розглядайте обидва як токени із задокументованими діапазонами, щоб забезпечити узгодженість на різних поверхнях.

Відповідайте з прикладами

/* Density */
[data-density="compact"] .btn { padding-block: .25rem; gap: .25rem; }
/* Size (type) */
:root { --font-0: 1rem; --font-1: 1.125rem; }
[data-size="lg"] { --font-0: 1.125rem; --font-1: 1.25rem; }

38) Які недоліки виникають внаслідок масштабного глобального перезавантаження, і які є безпечніші альтернативи?

Агресивні скидання можуть ненавмисно видалити корисні значення за замовчуванням, такі як контури фокуса, семантика списків та можливості керування формами. Це шкодить доступності та змушує надмірно повторно реалізовувати нативні поведінки. Безпечніші альтернативи включають сучасні нормалізації що усувають невідповідності, зберігаючи при цьому семантику, та скидання з обмеженою областю видимості застосовується через @layer до компонентів, які дійсно потребують чистого аркуша. Задокументуйте політику скидання, чітко відновіть критично важливі функції, такі як :focus-visible, та уникайте обнулення елементів, значення за замовчуванням яких передають значення, наприклад b, strong та em.

Відповідайте з прикладами

@layer reset {
	*,*::before,*::after { box-sizing: border-box; }
	:where(:focus-visible) { outline: 2px solid Highlight; outline-offset: 2px; }
}
/* Do not remove list semantics unless intentionally restyled */

39) Як ефективно налагоджувати складні каскадні проблеми за допомогою DevTools та сучасних функцій CSS?

Ефективне налагодження починається з ізоляції елемента в DevTools та перевірки обчислений панель, щоб побачити кінцеві значення властивостей та їх джерела. Далі перевірте Стилі порядок правил та специфічність панелі, щоб зрозуміти, чому правило виграло, звертаючи увагу на @layer порядок і чи втручається новий контекст укладання або зберігання. Togglправила для перевірки гіпотез та використання каскадного перегляду шарів (де доступно) для візуалізації пріоритету шарів. Додавання тимчасових контурів налагодження та врахування прапорців функцій через @supports розділити проблеми, вибірково відключаючи розширені шляхи.

Відповідайте з прикладами

/* Debug helper */
*{ outline: 1px solid rgba(0,128,255,.15); outline-offset:-1px; }

/* Bisect: disable advanced path */
@supports (container-name: card) {
/* move experimental styles here; toggle block in DevTools */
}

40) Яке місце займають стилі друку та медіа-запити у професійному CSS-конвеєрі, і які їхні переваги та недоліки?

Стилі друку залишаються важливими для продуктів з великим обсягом документації, рахунків-фактур та юридичних артефактів. Професійний конвеєр включає мінімальний @media print розділ, який видаляє зайвий хром, встановлює міру читабельності та забезпечує читабельність використання кольорів на пристроях із відтінками сірого. Переваги включають покращену якість архівування та довіру користувачів; недоліки включають додаткове обслуговування та необхідність аудиту контенту, який зазвичай є інтерактивним. Залишайте правила друку керованими токенами, уникайте абсолютного позиціонування, за винятком заголовків та нижніх колонтитулів, та тестуйте поширені браузери та генератори PDF, щоб запобігти аномаліям пагінації.

Відповідайте з прикладами

@media print {
	nav, .ads, .controls { display: none !important; }
	article { max-width: 80ch; margin: 0 auto; font-size: 11pt; line-height: 1.4; }
	a[href]::after { content: " (" attr(href) ")"; }
	img { break-inside: avoid; }
}

41) Яка стратегія створює передбачувану систему накладання, і як слід керувати нею z-index масштаб?

Передбачувана система накладання розглядає нашарування як задокументовану аферуtract, а не спеціальні числа. Визначте невелику, іменовану шкалу (наприклад, базову, підняту, накладну, модальну, підготовчу) та призначте компоненти рівням за допомогою змінних або класів корисності. Зберігайте кожне накладення у власному контексті стекування лише тоді, коли потрібна ізоляція, та уникайте випадкових контекстів з transform or filter якщо не навмисно. Головною перевагою є те, що інженери можуть міркувати про конфлікти без методу спроб і помилок; недоліком є ​​скромна початкова таксономія. Поєднуйте шкалу з жетонами дизайну та lint для значень поза діапазоном, щоб запобігти дрейфу.

Шкала накладання (таблиця порівняння)

Рівень Мета типовий z-index примітки
База Звичайний контент 0 Уникайте створення нових контекстів
Піднятий Липкі заголовки, висувні ящики 10-100 Зберігайте узгодженість всередині оболонки
Накладення Фони, полотна 900 Повна сторінка з захисним екраном
Модальний Діалогові вікна, засоби вибору 1000 становище fixedфокус пастки
Тост Сповіщення 1100 Неблокування; видалення з обмеженим часом

Відповідайте з прикладами

:root{
	--z-base: 0; --z-raised: 20; --z-overlay: 900; --z-modal: 1000; --z-toast: 1100;
}
.header{ position: sticky; top: 0; z-index: var(--z-raised); }
.modal{ position: fixed; inset: 0; z-index: var(--z-modal); }
.scrim{ position: fixed; inset: 0; z-index: var(--z-overlay); }

42) Як слід відповідально стилізувати нативні елементи керування формами, і які переваги та недоліки поширених методів?

Відповідальне стилізування форм враховує семантику, одночасно покращуючи доступність. Почніть зі збереження поведінки клавіатури та програми зчитування з екрана, а потім покращте шари: використовуйте accent-color щоб перевірені вхідні дані відповідали бренду без заміни елементів керування; застосовуйте appearance економно для нормалізації несумісних інтерфейсів; та цільові елементи керування завантаженням через ::file-selector-buttonПеревагою є доступний, послідовний контроль з мінімальними JavaСкрипт; недоліки включають нюанси кросбраузерності та спокусу повністю замінити елементи керування. Документуйте стани фокуса, стани помилок та вимкнення як частину API компонента, щоб уникнути спеціальних перевизначень.

Відповідайте з прикладами

/* Brand the native checkbox/radio without replacing it */
input[type="checkbox"], input[type="radio"] { accent-color: var(--brand, #4b6fff); }

/* Normalize look only when truly necessary */
select, input, textarea { appearance: none; }

/* File input affordance */
input[type="file"]::file-selector-button{
padding: .5rem .75rem; border-radius: .375rem; background: var(--brand);
color: #fff; border: 0; cursor: pointer;
}

43) Які стратегії існують для критичного CSS та розділення коду, і які їхні переваги та недоліки?

Критичний CSS покращує найбільший контентний малюнок, вбудовуючи правила, необхідні для контенту у верхній частині сторінки, відкладаючи решту. Code-розділення розділяє таблицю стилів за маршрутом, функцією або компонентом. Виміряний підхід поєднує невеликий критичний фрагмент з багатошаровими зовнішніми пакетами для зручності обслуговування. Перевагами є швидше сприймане завантаження та менше початкове корисне навантаження; недоліками є складність збірки та ризик дублювання, якщо не видалити дублікати під час компіляції. Віддавайте перевагу детермінованому нашаруванню ( @layer ) та правила іменування для забезпечення стабільності перевизначень між фрагментами.

Стратегії завантаження (порівняльна таблиця)

Стратегія Переваги Недоліки Типове використання
Вбудований критичний <style> Швидший LCP; без запиту Важче обслуговувати Оболонка, що знаходиться над згином
Асинхронний зовнішній CSS Кешується; модульний Спалах ризику нестилізованого контенту Маршрути додатків
Пакети медіа-спліту Умовне навантаження Складність; накладні витрати на тестування Друк, висока роздільна здатність, темний режим

Відповідайте з прикладами

<link rel="preload" href="/uk/css/app.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/uk/css/app.css"></noscript>
<style>@layer base{ /* small critical rules */ }</style>

44) Які сучасні параметри кольору CSS ( color-mix, відносний синтаксис кольорів, перцептивні простори), і коли їх слід використовувати?

Сучасний CSS підтримує композицію кольорів під час виконання за допомогою color-mix() та налаштування компонентів за допомогою відносного синтаксису кольорів, що дозволяє динамічне створення тем без попередньої компіляції. Перцептивні колірні простори, такі як OKLCH або Lab, забезпечують більш рівномірне налаштування яскравості та кольоровості, ніж sRGB, роблячи градиентні переходи та стани (наведення, вимкнено) більш узгодженими. Основною перевагою є передбачувані зміни контрастності та відтінку між темами; недоліки включають часткову підтримку в старіших движках та необхідність перевірки відповідності бренду. Використовуйте мікшування під час виконання для станів наведення або акцентування та зберігайте канонічні токени в перцептивному просторі, де це можливо, повертаючись до sRGB, коли це необхідно.

Відповідайте з прикладами

:root{
	--brand: oklch(60% .15 260);
	--brand-hover: color-mix(in oklch, var(--brand), black 12%);
	--muted: color-mix(in oklch, var(--brand), white 70%);
}
a{ color: var(--brand); }
a:hover{ color: var(--brand-hover); }
.badge{ background: var(--muted); }

45) Які техніки створюють стійку, адаптивну типографіку та вертикальний ритм?

Стійка типографіка поєднує читабельну довжину рядка, масштабовані розміри та однакові інтервали. Почніть з базового розміру шрифту, який враховує вподобання користувача, а потім використовуйте clamp() визначити плавні кроки, обмежені розумними межами. Встановити вертикальний ритм за допомогою lh або фіксовану висоту кореневого рядка та обмежити абзаци ch-засновані заходи. text-wrap: balance може покращити заголовки, розподіляючи розриви більш рівномірно, hyphens: auto а мовні метадані зменшують нерівні краї. Перевагами є читабельність та доступність у різних областях перегляду; недоліками є необхідність тестування лігатур та балансування поведінки зі шрифтами бренду.

Відповідайте з прикладами

:root{ --step-0: clamp(1rem, 1.2vw + .9rem, 1.125rem); line-height: 1.5; }
h1{ font-size: clamp(1.75rem, 4vw + 1rem, 2.5rem); text-wrap: balance; }
.prose{ max-width: 65ch; }
p{ margin-block: 1lh; hyphens: auto; }

46) Як працює прив'язка прокручуванняping а поля/відступи прокрутки взаємодіють для покращення навігації?

Прив’язка прокручуванняping створює детерміновані позиції затишку для каруселей та секційних макетів, водночас scroll-padding та scroll-margin переконайтеся, що цілі правильно вирівнюються під закріпленими заголовками. Використовуйте scroll-snap-type на контейнері і scroll-snap-align на елементах, що керують поведінкою. Переваги включають узгоджене відчуття та покращену навігацію за допомогою клавіатури tabindex та прив’язки; недоліками є потенційні розчарування, якщо точки прив’язки занадто агресивні або не налаштовані на імпульс на сенсорних пристроях. Забезпечте логічне відступання для верхньої частини області перегляду, щоб уникнути приховування вмісту під залишковим інтерфейсом користувача, та перевіряйте за допомогою взаємодії з клавіатурою та вказівником.

Відповідайте з прикладами

.carousel{ display:flex; overflow:auto; scroll-snap-type: x mandatory; scroll-padding-inline: 1rem; }
.slide{ flex: 0 0 80%; scroll-snap-align: start; margin-inline: .5rem; }
:target{ scroll-margin-top: 5rem; } /* sticky header offset */

47) Які CSS-шаблони роблять підказки та спливаючі вікна стійкими, і коли це JavaСценарій все ще потрібен?

CSS може обробляти прості підказки зі спрямуванням, використовуючи position, логічні зміщення та ::after стріли, що спрацьовують :hover та :focus-visible. Використовувати inset та трансформується для точного розміщення та @layer утиліти для z-упорядкування. Для складних випадаючих вікон — виявлення колізій, переміщення стрілок або перехоплення фокусаping-JavaСкрипт залишається необхідним, але CSS все ще визначає токени представлення. Перевагою шаблонів, що базуються на CSS, є низькі накладні витрати та коректна деградація; недоліком є ​​обмежена адаптивність до країв області перегляду без логіки. Завжди переконайтеся, що підказки доступні за допомогою клавіатури та не закривають важливі елементи керування.

Відповідайте з прикладами

.tip{ position: relative; }
.tip:hover .tip__bubble, .tip:focus-within .tip__bubble { opacity:1; transform: translateY(-4px); }
.tip__bubble{
	position:absolute; inset-block-end: 100%; inset-inline-start: 0;
	opacity:0; transform: translateY(0); transition: transform .15s, opacity .15s;
	z-index: var(--z-raised);
}

48) Як розробити адаптивні, зручні для читання таблиці даних, не вдаючись до складних переписувань?

Адаптивні таблиці зберігають семантику, пропонуючи зручний перегляд на вузьких екранах. Почніть з горизонтального прокручування всередині обмеженої оболонки, щоб уникнути перекомпонування заголовків та зв'язків. Для даних ключ-значення перейдіть на багатошаровий макет за допомогою display: grid з іменованими областями або додайте елементи керування видимістю стовпців для поступового розкриття. Переваги включають збереження доступності та просте обслуговування; недоліки – обмежений простір екрана та необхідність ретельного стилізації переповнення. Задокументуйте, які стовпці є важливими в кожній точці зупинки та надайте перевагу text-overflow з підказками для довгих значень.

Підходи (порівняльна таблиця)

Техніка Переваги Недоліки Best For
Горизонтальна прокрутка-обгортка Зберігає семантику Потрібне стилізування переповнення Широкі, щільні столи
Стекований макет ключ-значення Легко читається Втрачає вбудовані функції таблиці Мобільні характеристики, рахунки-фактури
Перемикачі стовпців Індивідуальна щільність Потрібне JS-підключення Панелі адміністратора

Відповідайте з прикладами

.table-wrap{ overflow:auto; max-inline-size:100%; }
.table{ min-inline-size: 52rem; border-collapse: collapse; }
.table th, .table td{ padding:.5rem; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }

49) Коли режими накладання, фільтри та маски мають практичну цінність, і які є компроміси?

Режими накладання ( mix-blend-mode, background-blend-mode ), фільтри ( blur, grayscale, drop-shadow ), та маски ( mask-image, mask-composite ) дозволяють використовувати такі ефекти, як скломорфізм, двотони та непрямокутні розкриття, без редагування растру. Вони чудово працюють на маркетингових поверхнях та в акцентах візуалізації даних, де важливе художнє керівництво. Перевагами є зменшення поширення ресурсів та динамічне створення тем; недоліками є зниження продуктивності на пристроях з низьким енергоспоживанням та можливі проблеми з доступністю, якщо зменшується контрастність. Залиште важкі ефекти для некритичних поверхонь, протестуйте вплив графічного процесора та забезпечте резервні варіанти зі зниженими преференціями.

Відповідайте з прикладами

.hero::before{
	content:""; position:absolute; inset:0;
	background: radial-gradient(circle at 30% 20%, #fff3, transparent 60%);
	mix-blend-mode: screen; filter: blur(20px);
}

50) Яку роль виконують? color-scheme а темізація системного інтерфейсу враховує цілісний стиль у різних браузерах?

Команда color-scheme Властивість оголошує цільові світлі та темні палітри, щоб компоненти користувацького агента (елементи керування формою, смуги прокручування в деяких рушіях) відображалися з відповідними фонами та кольорами тексту. Це зменшує потребу в користувацьких скінах елементів керування та запобігає невідповідностям, що виникають під час активації темного режиму. Перевагою є узгодженість з мінімальним кодом; недоліком є ​​те, що паритет між рушіями розвивається, і користувацький брендинг все ще може вимагати перевизначення. Об'єднати color-scheme з користувацькими властивостями для токенів та дозвіл на явне перевизначення користувачем, щоб уникнути пастокping користувачів у системних налаштуваннях, які вони не обирали.

Відповідайте з прикладами

:root{ color-scheme: light dark; }
body{ background: var(--bg); color: var(--fg); }
/* Controls inherit appropriate UA styling under the declared schemes */

🔍 Найпопулярніші питання на співбесіді з CSS з реальними сценаріями та стратегічними відповідями


1) Яка різниця між inline, inline-block та block елементи в CSS?

Очікується від кандидата: Інтерв'юер хоче перевірити ваше розуміння властивостей відображення елементів та того, як вони впливають на моделі макета та блоків.

Приклад відповіді:
«На моїй попередній посаді я часто стикався з невідповідностями макета, спричиненими неправильним розумінням типів відображення. А» block Елемент займає всю доступну ширину та починається з нового рядка. inline Елемент займає лише стільки ширини, скільки й його вміст, і не починається з нового рядка. inline-block дозволяє встановлювати ширину та висоту, як блочний елемент, але вбудовується, як текст. Розуміння цих відмінностей допомогло мені налаштувати адаптивний дизайн та підтримувати послідовне вирівнювання.


2) Як ви підходите до налагодження проблем CSS у складних макетах?

Очікується від кандидата: Інтерв'юер хоче знати про ваш систематичний підхід до виявлення та виправлення помилок макету.

Приклад відповіді:
«На попередній посаді я дотримувався структурованого підходу до налагодження CSS. Я використовував інструменти розробника браузерів для перевірки обчислених стилів та моделей блоків, виділяв конфліктуючі селектори та крок за кроком вимикав правила. Я також використовував префікси, специфічні для браузера, та тестував на кількох пристроях. Цей методичний процес налагодження значно зменшив проблеми з макетом інтерфейсу».


3) Чи можете ви пояснити, як працює каскад CSS та специфічність?

Очікується від кандидата: Інтерв'юер хоче оцінити ваші знання про те, як браузери визначають, які правила CSS мають пріоритет.

Приклад відповіді:
«Каскад CSS — це процес, який визначає, які правила застосовуються, коли кілька селекторів націлені на один і той самий елемент. Специфічність визначає пріоритет, причому найвищий пріоритет мають вбудовані стилі, далі йдуть ідентифікатори, потім класи, псевдокласи і, нарешті, елементи. Порядок вихідного коду також має значення, якщо специфічність однакова. Знання цього допомагає запобігти ненавмисному перезапису стилів і сприяє чистоті коду».


4) Опишіть, як ви працюєте з адаптивним дизайном, не покладаючись сильно на фреймворки.

Очікується від кандидата: Інтерв'юер перевіряє ваше розуміння гнучкості CSS та використання медіа-запитів.

Приклад відповіді:
«На моїй попередній посаді я розробляв адаптивні макети, використовуючи гнучкі сітки, відносні одиниці вимірювання, такі як em та rem, та медіа-запити для адаптації макетів до різної ширини екрана. Я також використовував CSS Grid та Flexbox для гнучких макетів. Такий підхід дозволив уникнути непотрібних залежностей від фреймворків, зберігаючи при цьомуping масштабований та зручний у підтримці дизайн».


5) Як би ви оптимізували CSS для продуктивності та зручності обслуговування?

Очікується від кандидата: Інтерв'юер оцінює вашу обізнаність з найкращими практиками масштабованості та продуктивності.

Приклад відповіді:
«На попередній роботі я оптимізував CSS, видаляючи невикористовувані стилі, об’єднуючи файли для зменшення кількості HTTP-запитів та впроваджуючи змінні CSS для зручності підтримки. Я також застосував правила іменування BEM, щоб код був організованим та легким для масштабування. Крім того, я використовував сучасні інструменти, такі як PostCSS та мініфікацію, для покращення продуктивності».


6) Розкажіть про випадок, коли вам довелося співпрацювати з розробниками або дизайнерами, щоб вирішити конфлікт стилів.

Очікується від кандидата: Інтерв'юер хоче бачити навички командної роботи та комунікації в міжфункціональному середовищі.

Приклад відповіді:
«У попередньому проєкті виник конфлікт між очікуваннями щодо дизайну та реалізацією розробником динамічної форми. Я запланував швидку синхронізацію з обома сторонами, продемонстрував візуальну проблему за допомогою скріншотів та запропонував коригування змінних CSS для забезпечення узгодженості дизайну. Така проактивна співпраця забезпечила візуально узгоджений результат без впливу на продуктивність».


7) З якими труднощами ви зіткнулися під час впровадження CSS-анімації або переходів, і як ви їх подолали?

Очікується від кандидата: Інтерв'юер хоче оцінити ваше розуміння оптимізації продуктивності та рендерингу в браузері.

Приклад відповіді:
«В одному проєкті анімація спричиняла нечіткість через проблеми з перекомпонуванням. Я виявив, що певні властивості CSS, такі як top та left викликали перерахунки макета. Я перейшов на використання transform та opacity, які прискорюються за допомогою графічного процесора, що забезпечує плавніші переходи. Я також оптимізував тривалість анімації для природного відчуття.


8) Як би ви структурували CSS для великомасштабного застосунку?

Очікується від кандидата: Інтерв'юер хоче зрозуміти ваш підхід до організації, масштабованості та зручності обслуговування.

Приклад відповіді:
«Я б використовував модульну архітектуру, таку як BEM, SMACSS або CSS-модулі, для логічного структурування стилів. Кожен компонент мав би власні стилі з обмеженою областю дії, щоб уникнути конфліктів. Я б також запровадив посібник зі стилів та правила іменування, щоб забезпечити узгодженість між командами та запобігти перевантаженню CSS у міру зростання проєкту».


9) Припустимо, клієнт скаржиться на те, що макет сторінки в Internet Explorer 11 ламається. Які кроки ви б зробили для вирішення цієї проблеми?

Очікується від кандидата: Інтерв'юер хоче перевірити вашу адаптивність до проблем застарілих браузерів.

Приклад відповіді:
«Спочатку я б відтворив проблему, використовуючи ту саму версію браузера. Потім я б визначив непідтримувані функції CSS за допомогою інструментів розробки браузера та перевірив би сумісність, використовуючи такі ресурси, як MDN або Can I Use. Після цього я б за потреби впровадив резервні варіанти або поліфіли. Я також задокументував би виправлення для майбутньої підтримки».


10) Як ви забезпечуєте кросбраузерну сумісність у ваших CSS-проектах?

Очікується від кандидата: Інтерв'юер хоче підтвердити вашу обізнаність щодо стандартів тестування та сумісності.

Приклад відповіді:
«Я забезпечую кросбраузерну сумісність, часто та на ранніх етапах тестування на ключових браузерах за допомогою таких інструментів, як BrowserStack. Я дотримуюся стандартів CSS та уникаю нестандартних властивостей. Я також використовую PostCSS з Autoprefixer для автоматичної обробки префіксів постачальників. Послідовна перевірка та тестування під час розробки запобігають серйозним проблемам після запуску».

Підсумуйте цей пост за допомогою: