Дата публикации: 26 октября 2026 г.
Ниже приведены руководства, доступные в Modern Web Guidance, по категориям.
Визуальный дизайн
Адаптировать полосу прокрутки к настройкам высокой контрастности
Улучшить видимость полосы прокрутки для пользователей, которые предпочитают высококонтрастные интерфейсы
Как применять шейдеры WebGL к HTML-контенту
Применяйте к HTML-контенту собственные визуальные эффекты с помощью шейдеров WebGL.
Цвет
Рекомендации по цвету для Интернета, включая требования к контрастности, светлые и темные цветовые схемы, режим принудительных цветов, а также создание оттенков и теней на основе базового цвета.
Сложные фигуры
Обрезайте элементы и их содержимое по любой свободной форме, например символу, мазку кисти или органической текстуре, чтобы создавать более выразительные дизайны.
Собственные стили оформления текста
Добавляйте к тексту подчеркивание, надчеркивание, зачеркивание или полностью настраиваемые фигуры с анимацией появления, настраиваемыми смещениями и конечными вставками, а также гибким пропуском чернил.
Как настроить цвет или толщину полосы прокрутки
Как настроить цвет или толщину полосы прокрутки
Ночной режим
Реализуйте поддержку тёмной темы так, чтобы она учитывала предпочтения пользователя и адаптировала интерфейс браузера (например, полосы прокрутки, элементы управления формами и т. д.).
Как включить интерактивный HTML-контент в 3D-сценах
Интегрируйте интерактивные элементы HTML в 3D-сцену.
Обеспечьте читаемость текста с помощью динамических цветов фона
Выберите цвет текста, который будет хорошо читаться на динамическом фоне.
Строки текста одинаковой ширины
Сделайте так, чтобы все строки многострочного заголовка или логотипа были одинаковой ширины, как в плакатах или многострочных заголовках. В отличие от выравнивания по ширине, в этом случае по ширине растягивается сам текст, а не пробелы.
Экспорт HTML-контента из Canvas
Захватывайте и экспортируйте динамический HTML-контент в виде изображений или кадров видео прямо из Canvas.
Предоставлять доступ к контенту canvas функциям браузера
Предоставлять доступ к контенту, отрисованному в элементе canvas, таким функциям браузера, как специальные возможности, перевод и режим чтения.
Улучшите макет текста и его читаемость
Улучшите макет и читаемость короткого отдельного текстового контента, например заголовков длиной не более нескольких строк, позволив браузеру применять равномерно сбалансированные разрывы строк при переносе текста.
Точное выравнивание текста
Точное вертикальное выравнивание текста с любым шрифтом. Например, поля над текстом и под ним должны быть одинаковыми, а текст должен быть выровнен по соседним значкам или изображениям.
Фигурные вырезки
Объединяйте несколько фигур, чтобы создавать сложные вырезы или эффекты выбивания в элементах, например добавлять выемку к элементу.
Затухание контента у мягких краев
Примените градиент прозрачности к краям контента, чтобы указать на наличие дополнительных областей прокрутки или скрыть платный текст.
Темы для интерфейса, созданного браузером
Оформляйте сгенерированные браузером элементы интерфейса, такие как выделение текста, полосы прокрутки, элементы управления формами и средства выбора, с помощью CSS, а не создавайте их заново с помощью пользовательских элементов.
Типографика
Рекомендации по типографике для Интернета, включая единицы измерения размера шрифта, высоту строки, перенос и балансировку текста, а также гибкий шрифт, который масштабируется в зависимости от области просмотра.
Визуальные эффекты
Визуальные эффекты с помощью CSS, такие как многослойные тени, режимы наложения, градиенты с предсказуемой интерполяцией цветов и узоры, такие как полосы, шахматные доски, точки и круговые диаграммы, созданные только на основе градиентов.
Визуально стабильные резервные шрифты
Определите стили шрифтов так, чтобы текст оставался читаемым и визуально согласованным в случае замены предпочтительного шрифта на один из резервных (или наоборот).
Визуально стабильные смешанные шрифты
Задайте стили шрифтов так, чтобы текст оставался читаемым и визуально согласованным в ситуациях, когда для отображения одного блока текста используется несколько шрифтов.
Визуально текстурированный контент
Применяйте реалистичные текстуры и эффекты выветривания, чтобы придать элементам органический, состаренный или материальный вид.
Элементы интерфейса
Как создать индикатор прокрутки
Создайте индикатор выполнения прокрутки, пошаговый трекер или любой другой визуальный элемент, который показывает, какую часть страницы или раздела пользователь уже просмотрел.
Как создать эффект карусели
Создайте карусель слайдов с изображениями или другими визуальными элементами, где каждый слайд анимируется при входе/центре/выходе из скроллера. Например, слайды могут появляться и исчезать, вращаться, увеличиваться или уменьшаться.
Светлая и тёмная темы для отдельных компонентов
Принудительно включать светлую или тёмную тему для определенных элементов (например, блоков кода, медиапроигрывателей и т.д.) независимо от цветовой схемы страницы.
Подсказки с учетом положения
Создавайте подсказки и всплывающие окна со стрелками направления (или другим визуальным стилем), которые автоматически указывают правильное направление, когда элемент переворачивается в резервное положение.
Потяните, чтобы показать
Создайте функцию, которая позволит пользователю потянуть экран вниз, чтобы увидеть больше контента, например строку поиска.
Адаптивные таблицы
Создайте таблицу данных, которая представляет табличные данные с правильной семантикой заголовков и остается читаемой и доступной для навигации на небольших экранах и с помощью технологий специальных возможностей.
Элементы, зависящие от положения прокрутки
Создавайте плавающие кнопки или виджеты (например, "Вверх", "Вниз", "Чат"), которые появляются и исчезают в зависимости от того, прокручивает ли пользователь страницу.
Подсказки о возможности прокрутки
Создайте наложения с тенями, градиентные переходы или стрелки, которые будут появляться, только если в этом направлении есть контент.
Уменьшение заголовка при прокрутке
Плавно анимируйте фиксированный заголовок или обложку на всю страницу при прокрутке, чтобы динамически уменьшать их, добавлять тени и преобразовывать макет на заданном расстоянии прокрутки.
Закрепленные заголовки с учетом состояния
Создавайте закрепленные заголовки разделов или панели навигации, которые визуально трансформируются, когда они фактически "застревают" вверху, меняя цветовую схему или приобретая тень.
Как использовать значки и управлять ими
Показывайте значки, которые можно настраивать с помощью CSS, быстро загружаются, четко отображаются при любом разрешении и правильно обрабатываются технологиями специальных возможностей.
Раскрывающиеся списки с учетом области просмотра
Расположите раскрывающиеся списки, всплывающие окна или панели контекстных действий, привязанные к кнопке-триггеру, так, чтобы они автоматически переворачивались по осям у краев области просмотра, а не обрезались.
Компоненты пользовательского интерфейса
Создать карточку
Создайте компонент карточки, который адаптирует свое представление к доступному пространству и содержимому.
Создание раскрывающегося меню
Создайте компонент меню, который отображает список параметров или действий с поддержкой вложенных подменю.
Как создать навигацию Scrollspy
Выделять в меню навигации раздел, который сейчас виден на странице
Как создать стилизованный индикатор выполнения
Создайте стилизованный индикатор выполнения, который сообщает о завершении задачи или процесса как в определенных, так и в неопределенных состояниях.
Создайте интерактивную всплывающую карточку
Создайте компонент всплывающей карточки, который показывает интерактивный структурированный предварительный просмотр страницы, на которую ведет ссылка определенного типа (например, профиль пользователя), при наведении на нее курсора.
Создание постоянных подсказок по приложению
Создавайте постоянные руководства по началу работы, используя привязанные нативные оверлеи, которые остаются открытыми во время взаимодействия с пользователем.
Создание всплывающих уведомлений
Создавайте ненавязчивые всплывающие и накладываемые уведомления для постоянных, накладываемых сообщений и сообщений о состоянии.
Переключатели тёмной темы
Создайте компонент переключения темного режима, который позволит пользователям переопределять настройки цветовой схемы системы для текущего сайта.
Dialog
Создайте компонент модального или немодального диалогового окна, который будет доступен, будет правильно управлять фокусом и который можно будет закрыть так, как ожидают пользователи на каждой платформе.
Индикатор выполнения
Создайте индикатор загрузки, который сообщает всем пользователям о занятом состоянии, учитывает предпочтения по уменьшению движения и эффективно анимирует.
Панель навигации
Создайте компонент панели навигации, который при нажатии кнопки меню выдвигается сбоку поверх существующего контента страницы и убирается при закрытии (свайпом, нажатием за пределами панели или клавишей Esc).
Кольцо прогресса
Создайте компонент кольца прогресса, который визуально представляет статус завершения задачи или процесса, с поддержкой контента в центре и стилем, соответствующим бренду.
Детализация стека
Создайте полноэкранную иерархическую навигацию, которая позволяет пользователям переходить к вложенным представлениям и возвращаться назад с помощью жестов или кнопок. При этом история браузера будет синхронизироваться.
Стилизация флажков
Настраивайте флажки, в том числе пользовательские значки, макет, цвета, анимацию установки и снятия флажка, сохраняя при этом встроенные функции и специальные возможности.
Поведение интерфейса
Добавьте эффекты входа и выхода для элементов, когда они входят в область прокрутки или выходят из нее.
Создавайте сложные эффекты появления и исчезновения элементов, например постепенное появление или увеличение масштаба, когда они входят в область прокрутки (или просмотра) и выходят из нее.
Подчеркивание вкладки позиционирования якоря
Плавный переход элемента между двумя целевыми позициями. Например, перемещение подчеркивания выбранной вкладки между ранее выбранной вкладкой и текущей выбранной вкладкой.
Анимация появления и исчезновения элементов
Плавно скрывайте и показывайте элементы, когда они добавляются в DOM или удаляются из него, а также когда переключаются значения их отображения.
Анимация элементов верхнего слоя
Анимируйте элементы, такие как диалоговые окна, всплывающие окна и подсказки, когда они входят в верхний слой или выходят из него.
Как создать перетаскиваемый элемент
Поддержка перетаскивания плавающего элемента по странице.
Как создать эффект параллакса при прокрутке
Создавайте эффекты, основанные на прокрутке (например, параллакс), при которых слои переднего и заднего плана перемещаются с разной скоростью, создавая ощущение глубины при прокрутке.
Карусель Snap Highlights
Визуально выделяйте текущий неинтерактивный элемент в каруселях, галереях или полноэкранных слайдерах с привязкой прокрутки. Например, можно развернуть карточку при привязке или показать скрытый контент.
Согласованные переходы между документами
Убедитесь, что критическое состояние страницы загружено и стабильно, прежде чем инициировать переход между документами. Это означает, что перед переходом загружаются и применяются критические стили CSS, загружается и запускается критический JavaScript, а также анализируется HTML, видимый для первоначального просмотра страницы пользователем.
Создание анимации с задержкой
Сдвиг времени анимации или перехода между дочерними элементами, чтобы каждый из них начинался после вычисленной задержки на основе его позиции в списке дочерних элементов.
Переходы между документами
Создавайте плавные, бесшовные переходы между навигацией по страницам, например перекрестное затухание, настраиваемые эффекты раскрытия или преобразование контента с одной страницы на другую.
Действия для настраиваемых кнопок
Декларативно связывайте кнопку с любым элементом, чтобы запускать специальные действия, характерные для приложения, с помощью декларативных команд кнопок, команд вызова, команд кнопок, специальных команд или декларативных действий переключения.
Декларативное диалоговое окно и элемент управления всплывающими окнами
Переключайте видимость диалогового окна или всплывающего окна с помощью кнопки без написания кода JavaScript.
Переходы при навигации по направлениям
Анимируйте изменения визуального состояния, чтобы отразить направление навигации пользователя, например, сдвигайте новый контент справа при продвижении вперед или слева при возврате к предыдущему экрану.
Переходы между элементами группы
Перемещайте группу похожих элементов одновременно, используя одну и ту же логику перехода. Например, когда пользователь удаляет товар из корзины, все остальные товары должны переместиться на новые позиции.
Выделение фрагментов текста
Выделяйте произвольные фрагменты текста на странице, например результаты поиска, орфографические ошибки или курсоры совместного редактирования.
Интерактивное раскрытие контента
Создавайте интерактивные эффекты, например прожектор, который следует за указателем пользователя, чтобы показать детали изображения или раздела интерфейса.
Предварительный просмотр действий, активируемых интересом
Показывайте предварительный просмотр действия кнопки, когда пользователь проявляет интерес (например, наводит курсор, фокусируется или долго нажимает), но до того, как он нажмет на нее.
Как закрыть диалоговое окно, нажав за его пределами
Создайте модальное диалоговое окно, которое можно закрыть, нажав за его пределами.
Анимация
Анимируйте пользовательский интерфейс с помощью переходов CSS, анимаций, анимаций, управляемых прокруткой, и переходов между представлениями, сохраняя при этом движение в компоновщике и соблюдая настройки уменьшенного движения.
Перемещение элемента DOM без потери состояния
Перемещайте или переназначайте родительский элемент DOM, не теряя важные состояния элемента, такие как состояния интерактивности (:focus/:active), состояние загрузки
<iframe>, состояние анимации/перехода и т. д.Постоянный верхний слой интерфейса
Модальное диалоговое окно, полноэкранный элемент или нативное всплывающее окно остаются видимыми и активными, когда их узел DOM перемещается или меняет родительский узел в DOM.
Динамика на основе физики
Создавайте собственные анимации и эффекты перехода на основе физики, например отскок и пружину, которые выглядят более естественно и привлекательно, чем традиционные кривые замедления.
Диалоговое окно закрытия элементов управления платформой
Создайте модальное диалоговое окно, которое можно закрыть стандартными действиями пользователя, например нажатием клавиши
Esc на компьютере или жестом "Назад" или "Закрыть" на мобильном устройстве.Как запретить прокрутку страницы под модальным диалоговым окном
Запретите прокрутку страницы, когда открыто модальное диалоговое окно.
Переходы в пределах одного документа
Визуально связывайте постоянные элементы в разных состояниях страницы или навигации в одностраничном приложении (например, разворачивайте уменьшенное изображение товара в полноэкранное главное изображение), плавно изменяя их размер, положение или другие свойства стиля.
Переходы между компонентами в области видимости
Анимируйте изменения состояния внутри одного компонента (карточки, списка, панели или другого поддерева), пока остальная часть страницы остается интерактивной, а другие переходы выполняются одновременно.
Отзывы о привязке прокрутки в реальном времени
Обеспечьте визуальную обратную связь в реальном времени в связанных элементах интерфейса, пока пользователь прокручивает контент с привязкой, до завершения жеста прокрутки.
Синхронизация состояния привязки прокрутки
Синхронизируйте индикаторы навигации, панели связанного контента и отслеживание аналитики с активно привязанным элементом в прокручиваемом контейнере.
Scrollytelling
Анимируйте визуальные свойства целевого элемента, например затухание фона, изменение цвета фона или создание эффекта прокрутки, полностью управляемого положением области прокрутки совершенно другого элемента.
Поиск по скрытому контенту
Скрывайте контент, используя такие элементы, как аккордеоны, вкладки и разделы "Читать далее". При этом убедитесь, что скрытый текст отображается при поиске по странице, индексируется поисковыми системами, поддерживает ссылки на контент с фрагментами URL и доступен для ARIA.
Как задать цель прокрутки для начальной отрисовки
Создайте прокручиваемый список элементов (например, карусель изображений или цепочку сообщений в чате), который можно отобразить с определенным элементом, прокрученным в поле зрения при первоначальном рендеринге.
Показывать подсказку при наведении указателя
Показывать подсказку или дополнительную информацию, когда пользователь наводит указатель мыши на интерактивный элемент, выбирает его или долго нажимает на него, не требуя клика.
Пространственная навигация (фокус на клавишах со стрелками)
Реализуйте доступную пространственную навигацию с помощью клавиш со стрелками, которая корректно работает в разных режимах макета (сетка и т. д.).
Смахните, чтобы удалить
Позвольте пользователям выполнять действия с элементами списка (удалять, архивировать, помечать как прочитанные и т. д.) с помощью горизонтального жеста пролистывания, чтобы они могли быстро обрабатывать записи, не нажимая отдельный элемент управления.
Проведите, чтобы посмотреть
Позвольте пользователям проводить пальцем по горизонтали по элементу списка или панели контента, чтобы открыть командные кнопки контекстных действий или боковое меню без автоматического запуска действия.
Запуск эффектов после завершения программной прокрутки
Запускайте визуальные эффекты, анимацию или изменение фокуса на целевом элементе только после того, как завершится плавная программная прокрутка до него.
Двухмерное панорамирование
Пользователи должны иметь возможность свободно панорамировать или прокручивать двумерные поверхности, такие как карты, увеличенные изображения, бесконечные холсты или большие сетки данных, в обоих направлениях (по диагонали или меняя направление в середине жеста) без привязки жеста к одной горизонтальной или вертикальной оси.
Формы.
Анимированный селектор выбора
Создайте настраиваемый компонент выбора с анимированным раскрывающимся списком. Например, меню может плавно появляться или выдвигаться, а пункты меню – анимироваться при выборе.
Формы в фирменном стиле
Вы можете настроить флажки, переключатели, ползунки и индикаторы выполнения в соответствии с цветовой палитрой сайта, не заменяя их настраиваемыми компонентами.
Ползунок диапазона в фирменном стиле
Настройте стиль нативного ползунка диапазона с настраиваемыми состояниями дорожки, ползунка, заливки и фокуса, сохраняя при этом нативную функциональность и доступность.
Стилизация брендированных объектов
Создавайте собственные элементы выбора, кнопка, средство выбора, значок стрелки и галочка которых идеально соответствуют типографике, цветам, интервалам и обработке границ вашего бренда или системы дизайна.
Создайте форму оплаты, следуя рекомендациям
Создайте платежную форму, которая собирает данные карты с правильными значениями автозаполнения и поддержкой автозаполнения.
Как создать форму входа, следуя рекомендациям
Создайте форму входа с правильными значениями автозаполнения и поддержкой автозаполнения.
Создайте форму регистрации, следуя рекомендациям
Создайте форму регистрации с правильными значениями автозаполнения и поддержкой автозаполнения.
Создание доступных элементов управления переключателями
Создайте доступный переключатель с помощью нативного атрибута switch в HTML. Если он не поддерживается, используйте стилизованный флажок.
Как создать форму адреса, следуя рекомендациям
Создайте форму адреса с правильными атрибутами автозаполнения и поддержкой автозаполнения.
Специальные макеты для выбора
Создавайте собственные селекторы, варианты в которых расположены необычным или интересным образом, а не в виде традиционного списка.
Автоматическое масштабирование полей формы
Поля формы должны увеличиваться и уменьшаться в зависимости от того, что вводит пользователь, например когда он вводит текст или выбирает другой вариант. Примените ограничения максимального и минимального размера, чтобы создать динамические и адаптивные поля формы, соответствующие дизайну страницы.
Формы.
Рекомендации по созданию доступных, безопасных и удобных веб-форм. Используйте это руководство при создании или изменении форм, полей ввода и процессов отправки.
Выделение полей, заполненных браузером и не измененных пользователем, с помощью CSS :autofill
Используйте CSS, чтобы выделить поля формы, которые были заполнены автоматически и не редактировались пользователем.
Безопасная отправка по нажатию Enter в IME
Реализуйте отправку по нажатию Enter в текстовых областях и однострочных полях ввода (чат, поиск, встроенное переименование) безопасно для пользователей IME (редактора метода ввода), чтобы предотвратить отправку неполного текста.
Отзыв об обязательном поле
Сообщение об ошибке для обязательных полей формы, которые были пропущены или оставлены пустыми, должно появляться только после взаимодействия с пользователем. Это позволит избежать преждевременных ошибок и обеспечить своевременную и контекстуально релевантную обратную связь.
Инструмент выбора мультимедиа (настраиваемый выбор)
Создайте специальный компонент выбора, варианты которого могут содержать сложное форматирование HTML (например, изображения, значки и другое расширенное форматирование), а не только обычный текст.
Взаимодействие с меню выбора
Проверяйте, что в меню выбора выбран вариант, отличный от варианта по умолчанию, только после того, как пользователь взаимодействовал с элементом управления.
Подтверждение формы с помощью одноразового кода из SMS
Подтверждайте номера телефонов пользователей и одноразовые коды доступа, отправленные по SMS, с помощью автоматического извлечения кода и доступного ввода формы.
Проверка ввода после взаимодействия
Показывайте сообщения о проверке полей формы (например, о сложности пароля или формате адреса электронной почты) только после того, как пользователь закончит первоначальное взаимодействие. Это позволит избежать преждевременных ошибок при загрузке страницы или во время ввода данных.
HTML
Доступные веб-компоненты
Сделайте специальные элементы доступными по умолчанию, задав роли и состояние ARIA с помощью миксина ElementInternals ARIA, управляя фокусом с помощью delegatesFocus и сохраняя отношения ARIA в одном корневом элементе shadow.
Пользовательские элементы
Определять, регистрировать и управлять жизненным циклом автономных пользовательских элементов, включая правила конструктора, обратные вызовы жизненного цикла, время обновления, отражение атрибутов/свойств и соглашения об именовании.
Специальные элементы, связанные с формой
Сделайте так, чтобы пользовательский элемент управления участвовал в формах с formAssociated и ElementInternals, отправляя собственное значение, интегрируясь с проверкой ограничений и реагируя на сброс, отключение и восстановление состояния.
HTML
Практические рекомендации по современной архитектуре HTML, семантике, нативным интерактивным API (Dialog, Popover, Details), управлению фокусом и приоритизации ресурсов. Используйте это руководство при структурировании веб-документов, реализации нативных оверлеев или оптимизации порядка загрузки ресурсов.
Предварительная отрисовка пользовательских элементов
Выполните рендеринг пользовательского элемента на сервере, а затем гидратируйте его на месте без повторного рендеринга или вспышки нестилизованного контента.
Shadow DOM, шаблоны и слоты
Инкапсулируйте DOM и стили компонента с помощью Shadow DOM, эффективно создавайте дерево с помощью HTML-шаблонов и проецируйте пользовательский контент с помощью слотов.
Стилизация веб-компонентов
Стилизация за пределами теневой границы с помощью селекторов :host, унаследованных и настраиваемых свойств для тем, ::slotted и ::part, а также каскадных слоев и запросов контейнеров внутри компонентов.
Ориентация веб-компонентов
Общие принципы создания и использования веб-компонентов, включая пользовательские элементы, Shadow DOM, шаблоны и слоты, Declarative Shadow DOM, стилизацию за пределами Shadow DOM, пользовательские элементы, связанные с формами, и требования к специальным возможностям. Используйте это руководство при создании многократно используемых компонентов пользовательского интерфейса, систем проектирования или пользовательских элементов, отображаемых сервером.
CSS
Анимация до встроенных размеров
Плавно анимируйте интерактивные компоненты (например, аккордеоны, меню и расширяющиеся карточки) до их естественных размеров и обратно.
Рассчитать с учетом встроенных размеров
Рассчитывать размер элемента на основе его собственного размера, обеспечивая при этом его соответствие заданным ограничениям дизайна.
Стилизация на основе состояния дочернего элемента
Создайте компонент, стиль которого меняется в зависимости от состояния одного из его дочерних элементов. Например, компонент, который отображается в светлом или темном режиме в зависимости от того, установлен ли переключатель темы (или нет).
Как условно применять CSS на основе поддержки At-правил
Применяйте определенные правила или объявления CSS только в том случае, если браузер поддерживает определенное at-правило.
Стилизация на основе контента
Создайте компонент, макет которого меняется в зависимости от того, содержит ли он определенные дочерние элементы. Например, если компонент содержит изображение, используйте макет с несколькими колонками, в противном случае по умолчанию используйте одноколоночный макет.
Макеты CSS и адаптивный дизайн
Современные макеты CSS, такие как flexbox, grid, subgrid, запросы контейнеров, позиционирование привязки и внутренний размер. Используйте этот навык при разработке адаптивных компонентов пользовательского интерфейса или макетов страниц.
CSS: современная архитектура
Практические рекомендации по современной архитектуре CSS, включая каскад, селекторы, области видимости, вложенность и токены дизайна. Используйте это руководство при создании стилей или управлении системами проектирования.
Реактивность токенов дизайна
Определите токены дизайна более высокого порядка, такие как режимы плотности (компактный, удобный, просторный) или темы, и заставьте дочерние компоненты реагировать на изменения напрямую и способами, соответствующими компонентам.
Гибкое масштабирование
Плавно масштабируйте элементы, такие как размер шрифта, интервалы и размеры медиафайлов, в зависимости от размера родительского контейнера, а не используйте фиксированные контрольные точки.
Отдельные свойства преобразования
Анимируйте или переопределяйте отдельные свойства преобразования CSS (например, translate, rotate, scale) независимо от других свойств преобразования одного элемента.
Управление обрезкой переполнения
Настройте видимую границу обрезки элемента, чтобы выровнять ее по краю контента, отступа или границы или по заданному смещению от любого из них, что обеспечивает более точный контроль над тем, как обрезается контент.
Как сократить повторение стилей с помощью функций CSS
Чтобы избежать чрезмерного повторения стилей, инкапсулируйте сложную или динамическую логику стилизации в функции, которые можно использовать повторно (например, функцию, которая вычисляет градиент на основе набора входных параметров).
Адаптивный дизайн
Создавайте интерфейсы, которые адаптируются к размеру контейнера и области просмотра, включая запросы контейнера, динамические единицы области просмотра, соотношения сторон и адаптивную типографику.
Комбинации селекторов и @-правил
Выбирайте элементы на основе пересечения или объединения селекторов и условных @-правил, сводя к минимуму повторения.
Адаптация семантических компонентов
Создавайте компоненты, которые адаптируют визуальную логику на основе семантического контекста, используя запросы стиля контейнера CSS.
Стили, зависящие от размера
Создайте компонент, стили которого могут условно зависеть от его собственной ширины или высоты, а не от ширины или высоты области просмотра. Например, компонент карточки может менять макет в зависимости от размера, а кнопка с призывом к действию – показывать подсказку в зависимости от ширины.
Стиль родителя с :has()
Оформление родительских элементов поля формы (например, ярлыков или наборов полей), когда поле недействительно.
Стилизация дочерних элементов на основе количества и индекса
Создавайте динамические визуальные спектры или макеты, которые автоматически адаптируются к количеству элементов в группе.
JavaScript
Вычисление разницы между событиями и форматирование длительности с помощью Temporal
Вычисляйте прошедшее или оставшееся время между датами и временем, балансируйте единицы продолжительности и форматируйте человекочитаемые локализованные продолжительности с помощью Temporal.Duration и Intl.DurationFormat.
Как регистрировать данные, не зависящие от местоположения, и неполные даты с помощью Temporal
Моделируйте календарные даты, не зависящие от местоположения, время на часах, неполные даты (повторяющиеся дни рождения, сроки действия кредитных карт) и повторяющиеся ежемесячные интервалы без смещения часового пояса, используя типы Temporal Plain.
Координация глобальных событий с помощью Temporal
Планируйте будущие встречи или мероприятия, явно привязывая их к географическому часовому поясу IANA, чтобы время мероприятий оставалось точным независимо от перехода на летнее время, "пропущенных" или "повторяющихся" часов при переводе часов.
Сортировка высокоточных временных меток с помощью Temporal.Instant
Выполняйте синтаксический анализ, сортируйте и измеряйте интервалы между временными метками ISO 8601 в субмиллисекундах или наносекундах без конфликтов усечения даты с помощью Temporal.Instant.
Поддержка глобальных календарных систем с помощью Temporal
Показывайте и рассчитывайте даты в негригорианских календарных системах (например, исламской, еврейской или китайской) точно для международных пользователей.
WebAssembly
Эффективность
Разбивайте длинные задачи
Разбивайте тяжелые синхронные процессы (сложные вычисления и/или длинные циклы) или обновления DOM, чтобы браузер мог обрабатывать пользовательский ввод и перерисовывать экран.
Рассчитывать общее время работы в активном режиме
Рассчитайте общее время, которое пользователь провел на странице, исключая периоды, когда вкладка была в фоновом режиме.
Условные асинхронные зависимости
Условно загружать или инициализировать асинхронные зависимости (например, импортировать полифилы для отсутствующих веб-функций) без необходимости сложной оркестрации всех зависимостей скриптов страницы.
Как устранить дребезг и объединить несколько событий аналитики в пакет
Объединяйте несколько событий аналитики, телеметрии и Core Web Vitals в один маяк, чтобы минимизировать конкуренцию в сети и снизить нагрузку на сервер, сохраняя при этом обновления в реальном времени.
Отложите отрисовку тяжелого контента
Сократите время отрисовки веб-страниц с большим количеством контента (например, страниц с длинными лентами, множеством статей или сложными панелями управления), отложив отрисовку любого контента, который не виден пользователю сразу.
Откладывать работу до окончания прокрутки
Отложите ресурсоемкие операции, такие как обновление DOM, получение данных, отслеживание аналитики или перерасчет макета, до завершения прокрутки, чтобы поддерживать плавную прокрутку.
Показ оптимизированных декоративных изображений
Оптимизируйте декоративные изображения (например, фоны, значки интерфейса или сложные маски), одновременно предоставляя графические форматы нового поколения (например, AVIF или WebP) и несколько вариантов плотности пикселей (например, 1x и 2x). Это позволит браузеру динамически подбирать наилучшее сочетание размера файла и визуального качества для возможностей устройства пользователя.
Снизить приоритет фоновых извлечений
Понизьте приоритет фонового получения данных с помощью Fetch API, чтобы избежать конфликтов в сети с запросами, инициированными пользователем.
Определять начальное состояние видимости
Надежно определять, была ли страница изначально загружена в фоновом режиме, даже если скрипт загружается асинхронно после того, как пользователь перевел страницу на передний план.
Эффективная фоновая обработка
Экономьте системные ресурсы и заряд батареи, приостанавливая выполнение JavaScript в фоновом режиме (например, анимацию
<canvas>, рендеринг WebGL или высокочастотный опрос данных WebSocket), когда компонент находится за пределами экрана, и возобновляя его, когда он снова появляется в поле зрения.Ускорение переходов между представлениями в одностраничных приложениях за счет кеширования состояний
Ускорьте переходы к ранее посещенным представлениям в одностраничном приложении (SPA), сохраняя их структурное состояние DOM вместо того, чтобы уничтожать и перестраивать их при каждой навигации.
A/B-тестирование на стороне клиента без мерцания
Выполнять и отрисовывать A/B-тестирование, многовариантное тестирование и другие эксперименты, используя клиентский JavaScript для изменения или внедрения HTML, CSS и JavaScript без предварительного показа оригинального контента, который затем заменяется экспериментальным.
Как определить причины низкого значения INP
Выявляйте медленно работающий код JavaScript и другие причины низкой скорости реакции на действия пользователя (INP).
Как выявить ресурсоемкий код JavaScript
Как определить скрипты, которые больше всего влияют на длительные кадры анимации
Улучшение загрузки следующей страницы
Чтобы улучшить загрузку страниц, на которые пользователь, скорее всего, перейдет, настройте их предварительную загрузку или предварительную отрисовку.
Отложенная загрузка видео и аудио
Отложите скачивание видео- и аудиообъектов, находящихся за пределами экрана, включая постеры видео и предварительно загруженные медиаданные, до тех пор, пока медиапроигрыватель не приблизится к области просмотра. Это позволит сэкономить пропускную способность и снизить нагрузку на сеть во время начальной загрузки страницы.
Как измерить время взаимодействия и отрисовки при мягкой навигации
Измерьте время, необходимое для отображения нового контента на экране после взаимодействия с пользователем и клиентской навигации.
Оптимизировать приоритет изображений
Оптимизируйте приоритет загрузки изображений, которые могут быть выбраны для Largest Contentful Paint (LCP), и снизьте приоритет некритичных изображений, чтобы уменьшить задержки при загрузке критически важных ресурсов.
Оптимизация приоритета предзагрузки
Оптимизируйте относительный приоритет предварительно загруженного контента, чтобы сократить задержки загрузки критически важных ресурсов.
Оптимизация приоритета скриптов
Оптимизируйте приоритет загрузки скриптов, повысив приоритет критически важных асинхронных скриптов и понизив приоритет несущественных скриптов или скриптов в конце тела страницы. Это позволит улучшить последовательность загрузки и сократить задержки.
Оптимизация взаимодействий в сложных макетах
Ускорьте взаимодействие и повысьте отзывчивость (снизив показатель Interaction to Next Paint (INP)), избегая перерасчета макета в сложных макетах, таких как информационные панели с большим объемом данных или сетки в стиле электронных таблиц.
Потоковая передача HTML-кода с нарушением порядка
Декларативно обновляйте страницу с помощью контента, который передается позже в тот же HTML-документ или через императивные API JavaScript.
Эффективность
Практические рекомендации по оптимизации современных веб-приложений. Используйте это руководство при проверке эффективности, оптимизации показателей загрузки, устранении медленных взаимодействий и оптимизации Core Web Vitals (LCP, INP, CLS).
Надежно измеряйте аналитику и телеметрию за весь сеанс
Надежно отслеживайте статистику, Core Web Vitals, ошибки и данные телеметрии на протяжении всего посещения страницы пользователем и откладывайте отправку данных до тех пор, пока пользователь не покинет страницу.
Псевдоэлементы, оптимизированные для разрешения
Используйте оптимизированные по разрешению изображения в псевдоэлементах CSS (таких как
::before и ::after), чтобы уменьшить количество узлов DOM.Планирование задач по приоритету
Планируйте задачи с разными приоритетами, чтобы критически важная работа выполнялась в первую очередь, а фоновая – откладывалась.
Специальные возможности
Рекомендации по программированию специальных возможностей
Практические рекомендации по написанию кода для создания доступных веб-приложений, включая семантический HTML, управление фокусом, формы, медиа и тестирование. Используйте этот навык при аудите или реализации специальных возможностей, навигации с помощью клавиатуры или ARIA.
Озвучивание ошибок
Синхронизируйте программные состояния специальных возможностей (например, aria-invalid) с визуальным состоянием :user-invalid, чтобы пользователи программ чтения с экрана получали отзывы об ошибках только после взаимодействия, отражая визуальный опыт.
Доступный сгенерированный контент
Используйте контент, созданный с помощью CSS (
::before/::after), так, чтобы он оставался доступным, включая альтернативный текст для декоративного контента.Учитывать масштабирование системного текста
Учитывайте настройки масштабирования текста в операционной системе, чтобы размеры шрифтов, макет и единицы измерения rem соответствовали настройкам специальных возможностей пользователя.
Безопасность
Сравнение и проверка источников и сайтов
Сравнивайте и проверяйте источники и сайты в сообщениях между документами и URL, не используя синтаксический анализ строк, который может привести к ошибкам.
Шифрование данных на стороне клиента с помощью WebCrypto
Создавайте общие секреты с помощью инкапсуляции открытых ключей или согласования ключей, включая гибридную и постквантовую защиту, и шифруйте конфиденциальные данные в браузере с помощью аутентифицированного шифрования.
Доступ к локальной сети
Доступ к ресурсам в локальной сети пользователя или интерфейсу обратной связи из общедоступного веб-приложения.
Аутентификация с помощью ключа доступа
Выполните аутентификацию вернувшегося пользователя с помощью ключа доступа для основного входа.
Условное создание ключа доступа (продвижение после входа)
Регистрируйте ключ доступа для существующего пользователя после успешного входа с паролем.
Управление ключами доступа
Разрешить пользователям просматривать ключи доступа, зарегистрированные в их аккаунте, и управлять ими.
Повторная аутентификация с помощью ключа доступа
Подтверждайте личность пользователя, выполнившего вход, с помощью его ключей доступа перед выполнением действий, связанных с безопасностью.
Регистрация ключа доступа
Зарегистрируйте ключ доступа для существующего аккаунта пользователя.
Ориентация ключей доступа
Подробные инструкции и общие принципы внедрения WebAuthn и ключей доступа в веб-приложениях. Используйте это руководство при регистрации, аутентификации, управлении или повторной аутентификации ключей доступа.
Как предотвратить XSS-атаки на основе DOM с помощью Trusted Types
Чтобы предотвратить XSS-атаки на основе DOM, определите правила Trusted Types для очистки ненадежного HTML-кода, используйте эти правила при записи в приемники DOM, такие как innerHTML, и обеспечьте соблюдение правил Trusted Types с помощью Content Security Policy.
Быстрый вход с помощью режима немедленного интерфейса
Выполняйте аутентификацию вернувшихся пользователей с помощью сохраненных ключей доступа или паролей, не перенаправляя их на страницу входа и не прерывая их работу.
Как ограничить исходящие сетевые подключения с помощью белых списков
Ограничьте связь страницы или воркера только с явным белым списком конечных точек сети, чтобы предотвратить несанкционированные сторонние запросы и кражу клиентских данных.
Очистка ненадежного HTML-кода
Безопасно выполняйте синтаксический анализ и показывайте ненадежный HTML-контент, введенный пользователем, удаляя небезопасные элементы и атрибуты.
Защита внешних подресурсов с помощью целостности подресурсов, CORS и политики реферера
Проверяйте криптографическую целостность внешних скриптов, таблиц стилей, шрифтов и изображений, загруженных из сторонних источников, и контролируйте, отправляются ли в этих запросах учетные данные или URL перехода.
Подписание и проверка данных с помощью WebCrypto
Подписывайте и проверяйте сообщения, токены или артефакты в браузере, используя классические или квантово-устойчивые (постквантовые) асимметричные ключи, чтобы обеспечить целостность данных и подлинность.
Подтвердите право собственности на адрес электронной почты
Проверяйте, что адрес электронной почты принадлежит пользователю, при создании аккаунта, входе в него или восстановлении доступа, не отправляя одноразовый код доступа или ссылку для входа.
Безопасность в интернете
Рекомендации по безопасности для веб-разработчиков (XSS, CSP, файлы cookie, изоляция от междоменных источников). Используйте этот навык, чтобы направлять процесс аудита, тестирования и безопасного развертывания политик безопасности.
Конфиденциальность
PWA
Встроенный ИИ
Распознавание языка
Определять язык контента, созданного пользователями, или уже имеющегося на сайте.
Языковая модель
Выполняйте логический вывод на естественном языке на устройстве в браузере с помощью Prompt API, потокового вывода, структурированных ответов JSON и управления многоэтапными сеансами.
Обобщение
Обобщайте текстовый контент с помощью Summarizer API на устройстве.
Translator
Переводите текст на разные языки с помощью Translator API на устройстве.
WebMCP
Агентные формы
Предоставляйте ИИ-агентам доступ к клиентским функциям, добавляя атрибуты WebMCP в стандартные HTML-формы.
Агентские инструменты JavaScript
Программно регистрируйте клиентские функции JavaScript как инструменты для ИИ-агентов с помощью WebMCP Imperative API.
WebMCP (Web Model Context Protocol)
Это руководство поможет вам реализовать WebMCP (Web Model Context Protocol) в браузерных приложениях, предоставляя ИИ-агентам доступ к клиентским функциям в виде инструментов через декларативные или императивные API.