W3docs

Свойство CSS object-position

Используйте свойство CSS object-position для определения позиции элемента внутри его контейнера. Значения свойства и примеры.

Свойство CSS object-position задаёт расположение замещаемого элемента — например, <img> или <video> — внутри его блока. Замещаемый элемент — это элемент, содержимое которого поступает из внешнего источника, а не из CSS, поэтому браузер самостоятельно решает, как разместить это содержимое в пространстве блока.

Само по себе object-position не производит видимого эффекта, если внутренний размер элемента совпадает с размером блока. Это несоответствие создаётся свойством object-fit: после того как object-fit масштабирует или обрезает содержимое (например, с помощью cover или contain), object-position определяет, какая часть содержимого остаётся в области видимости. Представьте блок как окно, а изображение — как большую картину за ним: object-position сдвигает картину так, чтобы через окно была видна нужная область.

Значение задаётся одной или двумя координатами: первая управляет осью X (горизонталь), вторая — осью Y (вертикаль). Если указана только одна координата, вторая по умолчанию принимает значение center.

/* keyword pairs */
object-position: left top;
object-position: right bottom;

/* lengths and percentages */
object-position: 10px 20%;
object-position: 50% 50%; /* the default — centered */

Каждая координата может быть ключевым словом (left, right, top, bottom, center), длиной (px, em, …) или процентом. Значение 0% выравнивает соответствующий край содержимого с тем же краем блока; 100% выравнивает противоположные края.

Информация

Отрицательные значения допустимы — object-position: -20px 0; выдвигает содержимое за левый край блока, скрывая ту полосу.

Начальное значение50% 50%
Применяется кЗамещаемым элементам.
НаследуетсяНет.
АнимируемоеДа. Изображение поддерживает анимацию.
ВерсияCSS3
DOM-синтаксисobject.style.objectPosition = "20% 0%";

Синтаксис

object-position: <position> | initial | inherit;

Примеры

Пример с позицией по умолчанию (50% 50%)

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

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      img.tree {
        width: 200px;
        height: 400px;
        border: 2px solid #8ebf42;
        object-fit: cover;
        object-position: 50% 50%;
      }
    </style>
  </head>
  <body>
    <h2>Object-position property example</h2>
    <h3>Original image:</h3>
    <img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree" width="300" height="200" />
    <h3>Object-position: 50% 50%</h3>
    <img class="tree" src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree" width="300" height="200" />
  </body>
</html>

Результат

CSS object-position 50% 50% отрисованный результат

Пример с ключевым словом left

При значении left горизонтальная ось привязывается к левому краю блока (вертикальная ось по умолчанию принимает значение center), поэтому левая сторона обрезанного изображения остаётся в области видимости.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      img.tree {
        width: 200px;
        height: 400px;
        border: 2px solid #8ebf42;
        object-fit: cover;
        object-position: left;
      }
    </style>
  </head>
  <body>
    <h2>Object-position property example</h2>
    <h3>Original image:</h3>
    <img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree" width="300" height="200" />
    <h3>Object-position: left</h3>
    <img class="tree" src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree" width="300" height="200" />
  </body>
</html>

Пример с длиной и процентом (10px 20%)

Для двух осей можно смешивать единицы измерения. Здесь содержимое смещено на 10px от левого края и на 20% вниз относительно блока.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      img.tree {
        width: 200px;
        height: 400px;
        border: 2px solid #8ebf42;
        object-fit: cover;
        object-position: 10px 20%;
      }
    </style>
  </head>
  <body>
    <h2>Object-position property example</h2>
    <h3>Original image:</h3>
    <img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree" width="300" height="200" />
    <h3>Object-position: 10px 20%</h3>
    <img class="tree" src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree" width="300" height="200" />
  </body>
</html>

Значения

ЗначениеОписание
<position>Задаёт позицию замещаемого элемента внутри его блока. Может быть ключевым словом (top, bottom, left, right, center) или комбинацией ключевых слов, процентов и длин.
initialУстанавливает свойство в значение по умолчанию.
inheritНаследует свойство от родительского элемента.

Когда использовать

object-position наиболее полезно для адаптивного кадрирования изображений. Когда фотография должна заполнять контейнер фиксированного размера (миниатюра карточки, баннер-герой, аватар) с object-fit: cover, браузер обрезает всё, что не помещается. По умолчанию обрезка происходит равномерно от центра, что может скрыть важную часть фотографии — например, лицо человека в верхней части кадра. Установка object-position: center top позволяет оставить эту область в зоне видимости.

Несколько важных моментов:

  • Свойство действует только на замещаемые элементы (<img>, <video>, <input type="image">, иногда <object>). На <div> оно не влияет.
  • Оно используется совместно с object-fit: object-fit определяет, как масштабируется или обрезается содержимое, а object-position — где располагается видимая область.
  • Синтаксис повторяет свойство background-position, поэтому применяются те же правила для ключевых слов и процентов.

Практика

Практика
Что делает свойство 'object-position' в CSS?
Что делает свойство 'object-position' в CSS?
Was this page helpful?