<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

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

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

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

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

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

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

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

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

CSS object-fit и object-position: как красиво обрезать изображения без искажений

CSS object-fit и object-position: как красиво обрезать изображения без искажений

Поисковый запрос, под который написана эта статья: CSS object-fit как обрезать изображение без искажений. Это частая задача в вёрстке: у вас есть карточка товара, аватар пользователя или большой баннер, а изображения приходят разных размеров. Если просто задать ширину и высоту, картинка может растянуться и выглядеть неаккуратно. Свойства object-fit и object-position решают эту проблему чистым CSS.

Что делает object-fit

object-fit задаёт, как содержимое заменяемого элемента — например, img или video — должно помещаться в заданную область. Важно: свойство работает, когда у элемента есть фиксированная область, то есть обычно заданы width и height.

.image {
  width: 300px;
  height: 200px;
  object-fit: cover;
}

В этом примере изображение займёт блок 300×200 пикселей, сохранит пропорции и будет обрезано по краям, если пропорции картинки не совпадают с пропорциями блока.

Основные значения object-fit

  • fill — значение по умолчанию. Картинка растягивается под размеры блока, пропорции могут исказиться.
  • contain — изображение целиком помещается внутрь блока, пропорции сохраняются, но могут появиться пустые области.
  • cover — изображение полностью закрывает блок, пропорции сохраняются, лишняя часть обрезается.
  • none — картинка не масштабируется.
  • scale-down — браузер выбирает меньший вариант между none и contain.

На практике чаще всего используются cover и contain.

Пример: карточка товара с аккуратным изображением

Представим карточку товара. Изображения в админке загружают разные: горизонтальные, вертикальные, квадратные. Нам нужно, чтобы сетка выглядела ровно.

<article class="product-card">
  <img class="product-card__image" src="product.jpg" alt="Кроссовки">
  <h3 class="product-card__title">Кроссовки Urban</h3>
  <p class="product-card__price">4 990 ₽</p>
</article>
.product-card {
  width: 280px;
  border: 1px solid #ddd;
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}

.product-card__image {
  display: block;
  width: 100%;
  height: 220px;
  object-fit: cover;
}

.product-card__title,
.product-card__price {
  margin: 12px 16px;
}

Здесь object-fit: cover делает все изображения визуально одинаковыми по размеру. Они не растягиваются, не сжимают карточку и не ломают сетку.

Когда использовать cover, а когда contain

cover подходит, когда важна красивая заливка области: карточки, фоновые изображения через img, баннеры, аватары, превью статей. Минус: часть изображения может быть обрезана.

contain подходит, когда нельзя терять ни одного фрагмента изображения: логотипы, схемы, товары на прозрачном фоне, сертификаты, иллюстрации с текстом.

.logo {
  width: 180px;
  height: 80px;
  object-fit: contain;
}

Если для логотипа поставить cover, браузер может обрезать часть надписи. Поэтому для логотипов почти всегда безопаснее contain.

Как управлять точкой обрезки через object-position

Свойство object-position указывает, какая часть изображения должна быть в фокусе при масштабировании и обрезке. По умолчанию используется центр:

.image {
  object-fit: cover;
  object-position: center center;
}

Если на фотографии важен верх, например лицо человека, можно сместить фокус вверх:

.avatar {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
}

Можно использовать ключевые слова, проценты и пиксели:

.photo-1 { object-position: left center; }
.photo-2 { object-position: 50% 20%; }
.photo-3 { object-position: right bottom; }

Запись 50% 20% означает: по горизонтали центр, по вертикали ближе к верхней части изображения.

Типичная ошибка: object-fit не работает

Чаще всего проблема в том, что у изображения не задана высота. Если написать только width: 100%, браузер сохранит естественные пропорции картинки, и object-fit будет почти незаметен.

/* Не всегда даёт ожидаемый результат */
.card img {
  width: 100%;
  object-fit: cover;
}

/* Правильнее: есть область, в которую помещается изображение */
.card img {
  width: 100%;
  height: 240px;
  object-fit: cover;
}

Иными словами, сначала задайте контейнер для изображения через размеры, а затем управляйте заполнением с помощью object-fit.

Современный вариант: aspect-ratio вместо фиксированной высоты

Если нужна адаптивная картинка с пропорциями, удобно использовать aspect-ratio. Например, превью 16:9:

.article-preview__image {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

Так изображение будет менять ширину вместе с карточкой, но высота рассчитается автоматически по заданному соотношению сторон.

object-fit для видео

Свойство работает не только с изображениями, но и с видео. Например, можно сделать видео-баннер, который заполняет экран без искажений:

.hero-video {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center;
}

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

Практические рекомендации

  • Для карточек товаров и статей чаще используйте object-fit: cover.
  • Для логотипов, иконок и изображений с текстом выбирайте object-fit: contain.
  • Всегда задавайте изображению область: width вместе с height или aspect-ratio.
  • Используйте object-position, если важная часть изображения обрезается.
  • Добавляйте display: block для img, чтобы убрать лишний нижний зазор, связанный со строчным поведением изображений.

Если вы хотите не просто знать отдельные CSS-свойства, а уверенно собирать реальные страницы, карточки, сетки, шапки и адаптивные блоки, полезно разобрать вёрстку реального сайта с нуля до готового результата. Там такие приёмы вроде object-fit становятся частью понятной практической системы.

Итог

CSS object-fit — одно из самых полезных свойств для работы с изображениями в современной вёрстке. Оно позволяет обрезать изображение без искажений, сохранять аккуратные карточки и контролировать внешний вид медиафайлов. Запомните простое правило: cover — красиво заполнить область, contain — показать изображение целиком, object-position — выбрать важную часть кадра.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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