Библиотека практикредакция 09.08.2026 Каталог ↗

Стандарты × решения × проверка

Не стиль.
Система решений.

Тринадцать живых лабораторий объясняют, что обязательно, что рекомендовано, что подтверждено исследованиями, а что пока остаётся экспериментом.

Baseline
WCAG 2.2 AA
Mobile
от 320 CSS px
Token model
primitive → semantic → component
Runtime
0 внешних запросов

Каждая запись: правило → live-demo → fallback → способ проверки → первичный источник.

01

Легенда уверенности

Не выдаём гипотезу за закон.

Фильтр показывает происхождение каждого тезиса. Один и тот же паттерн может быть полезен, но иметь разный уровень доказательности.

Normative

Reflow при 320 px

Требование WCAG: без потери информации и двумерной прокрутки для обычного контента.

WCAG 1.4.10 ↗
Guidance

Hero не lazy

Вероятный LCP-ресурс виден браузеру в исходном HTML; ниже fold медиа загружаются лениво.

web.dev LCP ↗
Research

Варианты — кнопками

Размеры и варианты товара легче сравнивать, когда они открыты, а не спрятаны в select.

Baymard PDP UX ↗
Experimental

WebXR как слой

AR появляется только после capability check; 2D и inline 3D остаются полноценными fallback.

WebXR Device API ↗

Показаны все четыре уровня.

02

Быстрый scorecard

Качество видно до релиза.

Выбери режим проверки. Порог меняется, но смысл остаётся: автоматическая оценка — сигнал, а не сертификат соответствия.

AccessibilityAA

полный пользовательский процесс

LCP≤ 2,5 с

75-й перцентиль

INP≤ 200 мс

mobile / desktop отдельно

CLS≤ 0,1

вся сессия страницы

Источники: WCAG 2.2 · Web Vitals

03

Mobile & input

Телефон — не уменьшенный desktop.

Измени ширину учебного viewport и проверь, сохраняются ли навигация, цель действия и порядок чтения.

Способ ввода
Reflow
одна колонка
Target
44 × 44 px
Gesture fallback
кнопки доступны
Focus
видимый контур

Учебный viewport: 360 пикселей, сенсорный ввод. Без JavaScript навигация раскрыта.

Проверка: Reflow · Dragging Movements · Target Size

04

Performance & media

Бюджет раньше бандла.

Сценарий показывает влияние размера первого изображения, JavaScript и ошибочного lazy loading на LCP/INP-риск.

Оценка рисканизкий

Вероятный LCP виден в HTML; JS остаётся в разумном бюджете.

Источники: Optimize LCP · Optimize INP · Optimize CLS

05

Commerce pattern

Покупатель сравнивает, интерфейс не прячет.

Переключи реализацию карточки. Хорошая версия показывает варианты, доставку и состояние выбора рядом с действием.

масштаб 1:1172 см

Studio 04 / льняной слой

Пальто «Север»

24 900 ₽
Размер

Доставка 8 августа · бесплатный возврат 14 дней

Выбран размер M. Доставка 8 августа.

Research: Baymard Product Page UX · Guidance: Shopify accessibility

06

3D / AR / VTO

Пространственный слой — только после согласия.

Демо не запрашивает камеру. Оно показывает безопасную последовательность: 2D → inline 3D → явный запуск AR с preflight.

вид 01 / фронт
Доступный baseline

Статичный 2D-вид

Товар, размеры и покупка доступны без WebGL, камеры и motion.

  • текстовое описание ракурса
  • точные размеры
  • обычная галерея

Активен 2D fallback. Разрешения не запрашиваются.

Источники: Shopify Product Media UX · MDN getUserMedia · W3C Privacy Principles

07

Token inspector

Одна роль — девять голосов.

Выбери бренд-диалект. Инспектор разрешит aliases из локального DTCG-like JSON и применит смысловые токены к одному компоненту.

practice / semantic roles

Смысл прежде значения.

Компонент не знает конкретный hex. Он знает поверхность, текст, линию и акцент.

Компонент показывает default-состояние semantic accent.

Показать цепочку aliascomponent.button → semantic.practice.accent → primitive.color.indigo

Формат: DTCG 2025.10. Community Group Final Report, не браузерный стандарт.

08

Contrast matrix

Контраст — это число и состояние.

Выбери цвета. Матрица вычислит отношение яркости и отдельно оценит обычный текст, крупный текст и значимую UI-графику.

Обычный текст 16 pxАа

Состояние кнопки: default.

Отношение16,2:1

AA для обычного и крупного текста: пройдено.

Пороговые значения WCAG
ПроверкаПорогРезультат
Обычный текст AA4,5:1пройдено
Крупный текст AA3:1пройдено
UI / графика3:1пройдено

Normative: Contrast Minimum · Non-text Contrast · Use of Color

09

Typography stress lab

Макет обязан пережить текст.

Увеличь размер, сузь колонку и замени строку. Тест намеренно использует длинную кириллицу и пользовательские интервалы.

Редакционная проверка / выпуск 08

Электрификация северо-восточного производственно-исследовательского комплекса продолжается без сокращений.

В 07:40 команда подтвердила маршрут. Интерфейс сохраняет слова, порядок чтения и доступ к действию даже при увеличении текста.

Открыть протокол

Масштаб 100%, колонка 58 знаков. Горизонтального переполнения нет.

Guidance: MDN clamp() · Normative: Resize Text · Text Spacing

10

Brand board

Бренд-бук начинается не с палитры.

Один и тот же смысл получает разные материальность, ритм и голос. Выбери диалект и сравни его с общей инженерной основой.

BPtechnical editorial

Правило / пример / проверка

Система должна объяснять себя.

Практика ценнее эффекта, когда её можно воспроизвести, проверить и безопасно отключить.

Display
Literata
Body
Manrope
Voice
точный, редакционный
Shape
линия и поле

Активен диалект Practice: техническая редакция.

11

Immersive art direction

Кадр строится слоями, история — передачами.

Визуальная теза Deep Line: документальная подводная тишина, mint как сигнал и amber только как авария. Один persistent-мир связывает главы; свет, plate, ближний план и текст дают каждой главе самостоятельную композицию.

Кромка / 00

Один сигнал ведёт взгляд.

Mint — смысловой акцент, а не декоративная заливка всего кадра.

Композиционный стек

Пять слоёв, пять разных задач.

  1. 01 · WorldПостоянная география, камера и крупные формы.
  2. 02 · AtmosphereFog, character light и частицы создают глубину.
  3. 03 · PlateАвторский establishing- или macro-кадр внутри главы.
  4. 04 · Near planeПрозрачная вырезка закрывает передачу, не весь рассказ.
  5. 05 · Copy + postSafe zone, semantic scrim, зерно, виньетка и локализованное свечение сигнала.

Chapter handoff

Новый план возникает на стыке камеры и окклюзии.

0–20%Камера входит20–45%Вырезка растёт45–65%Кадр закрыт65–100%Blur + fade

Камера продолжает путь без hard cut. Ближний план на короткий момент полностью разделяет композиции; после передачи он уходит и открывает новую visual safe zone. В обратной прокрутке последовательность остаётся детерминированной.

Палитра и свет
  • Сначала roles: surface, ink, muted, signal, warning.
  • Холодный ambient держит мир; тёплый key появляется только у причины.
  • Проверяй текст на самом шумном кадре, а не на пустом swatch.
Still plate
  • Один кадр отвечает на один вопрос: где мы, что проверяем или что сломалось.
  • Локальный WebP, фиксированный aspect-ratio, lazy loading и содержательный alt.
  • Plate дополняет DOM-текст и 3D, но не становится единственным носителем смысла.
Alpha cutout
  • Чистый прозрачный край, один доминирующий силуэт, без встроенного текста.
  • Вырезка принадлежит конкретному стыку глав и не живёт как вечный декор.
  • Полная окклюзия короткая; blur/fade ограничены зоной передачи.
Сюжетное движение
  • Погружение ведёт взвесь, линия — импульс, разрыв — выброс и тишину.
  • Возврат последовательно зажигает маршрут; весь мир не качается одинаково.
  • Любое движение должно иметь читаемую причину и статичный эквивалент.
Текст и safe zones
  • Не больше двух семейств: голос истории + служебный слой.
  • Не клади текст на траекторию камеры, cutout и главный объект.
  • Длинная кириллица, 200% zoom и text spacing входят в приёмку.
Стоп-сигналы
  • Лишнее свечение, случайная радуга и движение без сюжетной функции.
  • Busy background без semantic scrim и три акцента одинаковой силы.
  • Копирование чужого кода, текста или арта вместо независимой системы.
Одна история в четырёх режимах
РежимКамераPlate / cutoutPostСмысл
Full desktopНепрерывный ledgerПолная передача с blur + fadeTier-drivenDOM-текст + глава
ReducedДискретные главыСтатичные состояния, opacity без blurВиньетка без движенияТот же порядок и copy
MobileОтдельные endpointsОблегчённый near plane, lazy plateЛёгкий стекSafe zone под узкий экран
Poster / no-JSАвторский кадрКомпозиция запеченаНет runtime FXВесь текст остаётся в DOM
Quality меняет видимые feature sets
TierDPR / densityСветPost-FXНе меняется
Eco1.0 / sparseСтатичный chapter keyВиньетка; без grain и bloomPlate, handoff state, copy
Balance1.28 / mediumChapter key + restrained fillGrain, vignette, signal glowСюжет и доступность
Detail1.5 / fullПолный light ledgerGrain, vignette, localized signal glow, hazeСюжет и доступность

Проверка: WCAG Contrast · Reflow · MDN reduced motion · live-пример Глубина / 47 ↗

12

Motion policy

Сначала статичная режиссура.

Переключатель меняет только учебную сцену. Reduced-версия сохраняет причинность, заменяя перемещение мгновенной сменой состояния.

СобытиеСостояние подтверждено
Можно

opacity/transform, переход состояния, короткая причинная обратная связь.

Нельзя

автоплей без остановки, бесконечный параллакс, обязательный drag без кнопки.

Fallback

dissolve, мгновенная смена, статичная иллюстрация, текстовый статус.

Full motion: короткий переход объясняет смену состояния.

Guidance: MDN prefers-reduced-motion · Normative: Pause, Stop, Hide

13

QA matrix

Один score ничего не доказывает.

Самопроверка анализирует текущую страницу в браузере. Полный выпуск дополнительно требует Playwright, Axe, ручную клавиатуру, screen reader и физические устройства.

Матрица режимов и доказательств
ПроверкаАвтоРучнаяСтатус
13 уникальных anchorsDOMdeep linksне запущено
Подписи controlsDOMscreen readerне запущено
Horizontal overflowviewport320 / 360 pxне запущено
Reduced motion branchmedia queryвестибулярный комфортне запущено
Primary sourceslink countактуальность нормыне запущено
Complete processAxe/Lighthousekeyboard + SRтребует ручной проверки

Самопроверка ещё не запускалась.

Рецепт полного прогона
  1. 320 и 360 px, затем 200% zoom.
  2. Keyboard-only и видимый focus.
  3. Reduced motion, forced colors, no-JS.
  4. Медленная мобильная сеть, console и failed requests.
  5. Axe serious/critical + ручная проверка полного процесса.
  6. Полевые CWV p75 отдельно mobile/desktop.