<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 единицы измерения: px, em, rem, vw, vh — практическое руководство для начинающих

CSS единицы измерения: px, em, rem, vw, vh — практическое руководство для начинающих

Поисковый запрос, под который оптимизирована статья: «CSS единицы измерения: px, em, rem, vw, vh»

Зачем понимать CSS‑единицы

Единицы измерения в CSS напрямую влияют на адаптивность и масштабируемость интерфейса. Неправильный выбор приводит к «расползанию» верстки при зуме, неожиданным отступам и сломанной типографике. Ниже — практическое руководство с примерами и советами, которое поможет уверенно выбирать нужную единицу под задачу.

Абсолютные единицы: px и компания

px — де-факто стандарт для точечных деталей (границы, тонкие линии, пиксель‑перфект элементы). Остальные абсолютные (pt, cm, mm, in) используются редко и в вебе почти не нужны.

  • Используйте px для: границ 1px, теней, мелкой иконографии, когда важна точная толщина.
  • Избегайте px для базового кегля текста и крупных отступов — они не учитывают пользовательский размер шрифта и плохо масштабируются.

Относительные единицы: em и rem

rem считается от корневого шрифта (элемент html), а em — от текущего элемента (или ближайшего предка, где задан font-size).

  • rem — стабильная «валюта» макета: удобно задавать типографику и вертикальный ритм.
  • em — хорошо масштабирует внутренние части компонента относительно его собственного шрифта (иконки в кнопке, внутренние отступы).
/* Базовый размер шрифта (обычно 16px по умолчанию браузера) */
html { font-size: 100%; } /* 1rem = 16px, рекомендуется не занижать */

/***** Типографика и отступы на rem *****/
h1 { font-size: 2rem; margin-bottom: 1rem; }
p  { font-size: 1rem; line-height: 1.5; }

/***** Внутренняя масштабируемость компонента на em *****/
.button {
  font-size: 1rem;           /* базовый кегль */
  padding: 0.75em 1.25em;    /* подстраивается под font-size кнопки */
  border-radius: 0.5em;
}
.button--lg { font-size: 1.125rem; } /* всё «нарастет» пропорционально */

Типичная ошибка — вкладывать элементы с em и менять font-size на предках: величины начинают «умножаться». Если не нужна вложенная масштабируемость — используйте rem.

Единицы окна: vw, vh, vmin, vmax и новые dvh/svh/lvh

vw — 1% ширины окна, vh — 1% высоты окна. vmin и vmax — минимум/максимум из vw и vh. На мобильных у vh есть подвох: адресная строка меняет высоту видимой области, поэтому появились новые единицы:

  • dvh — динамическая высота (учитывает появление/исчезновение браузерных UI).
  • svh — «маленькая» высота (когда UI показан).
  • lvh — «большая» высота (когда UI скрыт).
/* Полноэкранный блок с адекватной высотой на мобильных */
.hero {
  min-height: 100vh;   /* базовый фолбек */
  min-height: 100dvh;  /* современные браузеры возьмут это */
  display: grid;
  place-items: center;
}

Совет: не злоупотребляйте vh для вертикальных отступов — лучше rem. vw отлично подходит для фоновых изображений на всю ширину и аккуратной fluid‑типографики вместе с clamp().

Проценты (%)

Проценты зависят от размера родителя. Важный нюанс: padding в процентах считается от ширины контейнера, даже по вертикали. Это использовали для соотношений сторон, но сегодня проще так:

/* Современный способ задать соотношение сторон */
.card {
  aspect-ratio: 16 / 9; /* вместо padding-top: 56.25% */
}

calc(), min(), max(), clamp(): гибкость без JS

Эти функции позволяют выражать зависимости между единицами. Самое полезное — clamp() для «жидкой» типографики: размер растет между минимальным и максимальным значениями в зависимости от ширины окна.

/* Fluid‑типографика заголовка: от 24px до 40px */
:root { --step: 1rem; } /* 1rem = 16px */
h1 {
  font-size: clamp(1.5rem, 1rem + 3vw, 2.5rem);
  margin-bottom: var(--step);
}

/* Гибкие отступы: растут чуть-чуть вместе с вьюпортом */
.section {
  padding: clamp(1rem, 0.75rem + 1vw, 2rem);
}

/* Комбинация rem и px для тонкой настройки */
.box {
  width: calc(100% - 2rem);
  border: 1px solid #ddd; /* точность в px для границ */
}

Брейкпоинты в em: почему так лучше

Медиа‑запросы на em учитывают пользовательский зум и предпочтения шрифта: макет «ломается» в более предсказуемых местах на разных DPI и масштабах.

/* 1em в media завязан на размер шрифта браузера (обычно 16px) */
@media (min-width: 48em) { /* ~768px */
  .grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 64em) { /* ~1024px */
  .grid { grid-template-columns: repeat(3, 1fr); }
}

Мини‑проект: карточка с продуманными единицами

/* Базовые токены */
:root {
  --space-1: 0.5rem;
  --space-2: 1rem;
  --space-3: clamp(1rem, 0.75rem + 1vw, 2rem);
  --radius: 0.75rem;
}

.card {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-3);
  border: 1px solid #e6e6e6;         /* точность в px */
  border-radius: var(--radius);      /* масштабируемый радиус */
  background: #fff;
  max-width: 42rem;                  /* предсказуемая ширина */
}

.card__title {
  font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem);
  line-height: 1.2; /* без единиц для стабильности */
  margin: 0;
}

.card__text { font-size: 1rem; line-height: 1.6; }

.card__actions { display: flex; gap: var(--space-1); }

.button {
  font-size: 1rem;
  padding: 0.75em 1.25em;  /* эм — под размер текста в кнопке */
  border: 1px solid #222;
  background: #222; color: #fff;
  border-radius: 0.5em;
}
.button--ghost { background: transparent; color: #222; }

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

  • 100vh на мобильных: приводит к «прокрутке» на 1–2 строки из‑за браузерных панелей. Решение: dvh или двойное объявление min-height: 100vh; 100dvh;
  • Слишком много px: плохо масштабируется. Используйте rem для типографики и больших отступов.
  • Эскалация em: вложенные компоненты растут непредсказуемо. Если не нужна локальная масштабируемость — берите rem.
  • Брейкпоинты в px: становятся «жесткими». Перейдите на em для лучшей доступности при зуме.
  • Фиксированный line-height в px: ломает ритм при масштабировании. Делайте line-height без единиц (например, 1.5).

Рекомендуемые практики (шпаргалка)

  • Текст, отступы, ширины контейнеров — на rem; внутри компонента — em; границы — px.
  • Для «полноэкранных» секций — dvh с фолбеком на vh.
  • Используйте clamp() для fluid‑типографики и мягких отступов.
  • Медиа‑запросы — в em, чтобы уважать пользовательский зум.
  • aspect-ratio вместо процентных паддингов для соотношений сторон.
  • Тестируйте в реальном мобильном браузере, проверьте масштаб 125–200%.

Где потренироваться на практике

Если хотите быстро закрепить работу с единицами, отступами и адаптивом на реальном проекте, посмотрите курс «Вёрстка сайта с нуля 2.0». Это пошаговая практика с разбором тонкостей CSS: Прокачать верстку на реальном проекте за 30 дней →

Итог

Выбор единиц — фундамент качественной вёрстки. Комбинируйте rem для базы, em для локальной масштабируемости, px для точных деталей, а dvh/vw — для эффектных адаптивных секций. Добавьте calc() и clamp() — и получите гибкий, предсказуемый интерфейс без лишнего JavaScript.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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