Модуль 5 · Урок 18

Media queries, ranges і user preferences

Media query — умовний шар enhancement, а не спосіб визначити людину чи конкретний device. Width ranges відповідають за composition, capability features — за спосіб взаємодії, а user preferences мають зберігати content і функцію.

Range syntaxPointer/hoverColor/contrastReduced motion

Синтаксис і логіка умов

@media (width >= 56rem) { .layout { grid-template-columns:2fr 1fr; } }
@media (hover:hover) and (pointer:fine) { .card:hover { transform:translateY(-.2rem); } }
@media (prefers-reduced-motion:reduce) { * { scroll-behavior:auto; } }
@media (forced-colors:active) { .focus-ring { outline:2px solid CanvasText; } }

and вимагає виконання всіх умов; comma-separated query list працює як OR; not заперечує query. Сучасна range syntax читається як математична межа. Перевіряйте обидві сторони boundary, бо рівність входить лише там, де це явно записано.

Width не описує користувача

ПотребаFeatureНеправильне припущення
Змінити композиціюwidth«Вузький = touch»
Hover enhancementhoverHover є єдиним способом відкрити дію
Розмір точного pointerpointerFine pointer означає великий screen
Theme preferenceprefers-color-schemePreference завжди дорівнює стану вашого toggle
Менше motionprefers-reduced-motionПриховати content разом з animation

Preference-safe enhancement

У reduced-motion mode приберіть або скоротіть nonessential movement, але не вимикайте feedback і не ховайте інформацію. У forced colors використовуйте системні colors, borders/outlines та перевіряйте видимий focus. Theme toggle сайту може мати власний explicit state; не змушуйте media query перезаписувати вибір користувача після кожного завантаження.

ContentДоступний у кожному mode.
FunctionПрацює без hover і motion.
FocusВидимий у custom та forced colors.
BoundaryПеревірений з обох боків.

Практика

  1. Заповніть media-query matrix: query, intent, fallback і tests.
  2. Додайте один content-driven width breakpoint.
  3. Зробіть hover effect лише enhancement; ті самі дії мають бути доступні keyboard/touch.
  4. Перевірте light, dark, reduced motion і forced colors без втрати інформації.

Офіційні джерела

Практична перевірка · урок 18 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. З чого може складатися media query?
2. Що означає @media (width >= 56rem)?
3. Як працює comma-separated query list?