<MyRusakov.ru />

Создание игр на Unreal Engine 5

Создание игр на Unreal Engine 5

Данный курс научит Вас созданию игр на Unreal Engine 5. Курс состоит из 12 модулей, в которых Вы с нуля освоите этот движок и сможете создавать самые разные игры.

В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров. Дополнительно, почти к каждому уроку идут упражнения для закрепления материала.

Помимо самого курса Вас ждёт ещё 8 бесплатных ценных Бонусов: «Chaos Destruction», «Разработка 2D-игры», «Динамическая смена дня и ночи», «Создание динамической погоды», «Создание искусственного интеллекта для NPC», «Создание игры под мобильные устройства», «Создание прототипа RPG с открытым миром» и и весь курс «Создание игр на Unreal Engine 4» (актуальный и в 5-й версии), включающий в себя ещё десятки часов видеоуроков.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

CSS Reset vs Normalize в 2026: что выбрать и как настроить свой базовый стиль

CSS Reset vs Normalize в 2026: что выбрать и как настроить свой базовый стиль

Одинаковая вёрстка в разных браузерах начинается с правильной базы. Браузеры поставляют свои «дефолтные» стили (UA stylesheet): отступы у заголовков и списков, оформление кнопок и форм, интерлиньяж и т.д. Если их игнорировать, получите «пляшущие» интерфейсы. В этой статье мы разберём, что выбрать — CSS Reset или Normalize — и соберём современный, аккуратный базовый стиль с использованием @layer и безопасных приёмов.

Хотите быстрее прокачать навыки вёрстки на реальных примерах? Посмотрите практический курс: Освоить вёрстку с нуля и собрать проект под руководством — «Вёрстка сайта с нуля 2.0».

CSS Reset vs Normalize: в чём разница

CSS Reset полностью «обнуляет» большинство базовых стилей браузера: убирает отступы, сбрасывает оформление элементов, иногда — даже буллеты у списков. Идея проста: начать с «чистого листа» и задать всё самому.

  • Плюсы: предсказуемость, единая точка старта.
  • Минусы: можно потерять полезные дефолты (например, видимый фокус у клавиатурной навигации).

Normalize.css не обнуляет, а выравнивает различия между браузерами. Полезные стандартизированные значения сохраняются, спорные — нормализуются.

  • Плюсы: меньше шансов сломать доступность и поведение форм.
  • Минусы: часть несовпадений всё равно останется; иногда сложнее переопределять дальше.

Когда выбирать что

  • Reset: дизайн‑система, где вы контролируете всё от A до Я, строгая визуальная унификация, кастомные элементы интерфейса.
  • Normalize: контентные сайты, блоги, документация, где уместно сохранить привычное поведение браузера.
  • Смешанный подход: минимальный безопасный reset + точечная нормализация форм и типографики — оптимальный вариант для большинства проектов в 2026 году.

Современные варианты на рынке

  • normalize.css — классика, хорошо документирована.
  • modern-normalize — короче, обновлён под современные браузеры.
  • sanitize.css — модульный, с упором на надёжность и доступность.
  • CSS Remedy (Mozilla) — «исправить» устаревшие дефолты, не обнуляя всё подряд.
  • Reboot (из Bootstrap) — нормализация + базовая типографика.

Практика: минималистичный безопасный reset с @layer

Используем современные приёмы: @layer снижает вес слоя «reset», :where уменьшает специфичность, а также сохраняем фокус и поведение форм.

/* Ставим слой reset самым нижним в каскаде */
@layer reset {
  /* Универсальная модель коробки */
  *, *::before, *::after { box-sizing: border-box; }

  /* Базовые настройки документа */
  html { line-height: 1.5; -webkit-text-size-adjust: 100%; }
  body { margin: 0; min-height: 100vh; text-rendering: optimizeLegibility; }

  /* Убираем неожиданные отступы, но мягко */
  :where(h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd) { margin: 0; }

  /* Списки без маркеров — только если явно задана роль */
  :where(ul[role="list"], ol[role="list"]) { list-style: none; margin: 0; padding: 0; }

  /* Изображения и медиа адаптивно вписываются в контейнер */
  img, svg, video, canvas { max-width: 100%; height: auto; display: block; }

  /* Наследуем шрифт для форм (без устранения нативных особенностей) */
  button, input, select, textarea { font: inherit; color: inherit; }

  /* Ссылки — подчёркивание не убираем, но улучшаем читаемость */
  a { text-underline-offset: 0.15em; text-decoration-thickness: 0.08em; }

  /* Не трогаем outline! Но делаем фокус заметным, если браузер его не выделяет явно */
  :focus-visible { outline: 2px solid Highlight; outline-offset: 2px; }

  /* Меньше анимаций по запросу пользователя */
  @media (prefers-reduced-motion: reduce) {
    * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
  }
}

Дальше создадим слой base для типографики и цветов, а компонентные стили положим ещё выше — так ими проще управлять.

@layer base {
  :root {
    --font-sans: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
    --text: #1f2328; --muted: #6b7280; --bg: #fff;
  }
  body { font-family: var(--font-sans); color: var(--text); background: var(--bg); }
  h1 { font-size: clamp(1.875rem, 1.2rem + 2vw, 2.5rem); font-weight: 700; }
  h2 { font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2rem); font-weight: 700; }
  p  { margin-block: 0.75rem; color: var(--text); }
  small, .muted { color: var(--muted); }
}

@layer components {
  .btn {
    display: inline-flex; align-items: center; gap: .5rem;
    padding: .6rem 1rem; border-radius: .5rem; border: 1px solid currentColor;
    background: transparent; cursor: pointer; text-decoration: none; font-weight: 600;
  }
  .btn--primary { background: #2563eb; color: #fff; border-color: #2563eb; }
  .btn--primary:focus-visible { outline-color: #1d4ed8; }
}

Подключить normalize и совместить с @layer

Если вы используете normalize.css или modern-normalize, полезно поместить их в слой reset — так их проще переопределять без !important.

@layer reset {
  /* Пример через CDN (для иллюстрации) */
}
@import url("https://cdn.jsdelivr.net/npm/modern-normalize/modern-normalize.css") layer(reset);

Теперь любые ваши базовые и компонентные стили автоматически «сильнее», чем normalize, но без повышения специфичности.

Точечная нормализация форм: удобно и безопасно

Формы — самый «ломкий» участок. Не стираем поведение, а выравниваем визуально и сохраняем доступность.

@layer base {
  label { display: inline-block; margin-block: .25rem .5rem; }
  input[type="text"], input[type="email"], input[type="search"], textarea, select {
    width: 100%; padding: .6rem .75rem; border: 1px solid #cbd5e1; border-radius: .5rem;
    background: #fff; color: inherit;
  }
  input:focus-visible, textarea:focus-visible, select:focus-visible {
    outline: 2px solid #2563eb; outline-offset: 2px;
  }
  /* Чекбоксы и радио: оставляем нативное поведение, лишь масштабируем */
  input[type="checkbox"], input[type="radio"] { accent-color: #2563eb; }
}

Как «отменять» reset локально: revert и revert-layer

Иногда нужно вернуть нативные стили для конкретного блока (например, контент CMS). Используйте revert или revert-layer.

@layer components {
  .article-content {
    /* Вернуть значения из предыдущих слоёв (и UA) там, где это уместно */
    h1, h2, h3, h4, h5, h6, p, ul, ol { all: revert-layer; }
    /* И потом слегка настроить под дизайн */
    max-width: 70ch; margin-inline: auto; line-height: 1.7;
  }
}

revert-layer откатывает только влияние текущего и более «верхних» слоёв, сохраняя normalize и пользовательские стили браузера — удобно для «островков» контента.

Частые ошибки и как их избежать

  • Удалили outline у фокуса. Никогда не делайте a:focus, button:focus { outline: none } без альтернативы. Используйте :focus-visible с явным обводом.
  • aggressive reset форм. all: unset на полях ломает доступность и поведение. Лучше минимально выравнивать.
  • Сбросили списки везде. Убирайте маркеры только там, где действительно нужна «плоская» навигация (через роль или класс).
  • Слишком высокая специфичность. Применяйте :where и @layer — тогда переопределения будут предсказуемыми без !important.
  • Стили «гуляют» по проекту. Разделяйте слои: reset → base → components → utilities. Это улучшает читаемость и снижает баги каскада.

Чеклист внедрения

  1. Выберите стратегию: минимальный reset + точечная нормализация — для большинства проектов лучший старт.
  2. Положите reset и normalize в отдельный слой: @layer reset {…} или @import … layer(reset).
  3. Настройте базовую типографику и цвета в слое base, не ломая доступность.
  4. Стройте компоненты в своём слое, избегая !important и высокой специфичности.
  5. Где нужно «нативное» поведение (контент CMS) — применяйте revert-layer точечно.
  6. Проверьте клавиатурную навигацию, контраст и prefers-reduced-motion.

Итог

CSS Reset и Normalize — не конкуренты, а инструменты под разные задачи. В 2026 году лучший практический путь: мягкий безопасный reset, нормализация там, где это важно (особенно формы), и продуманная архитектура слоёв. Такой подход даёт предсказуемую базу, не ломает доступность и упрощает поддержку проекта.

Готовы закрепить всё на практике и собрать собственную мини‑дизайн‑систему? Пройдите курс «Вёрстка сайта с нуля 2.0» и прокачайте вёрстку на реальных задачах.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.