В этой статье мы поговорим о двух свойствах CSS, о которых знают немногие веб-разработчики. Они называются object-fit и object-position, и оба имеют отношение к стилизации изображений и видео. Мы покажем вам, как их использовать, и подробно рассмотрим все важные характеристики.

Object-fit

Свойство object-fit может указать, как изображение (или видео) будет растягиваться или сжиматься, чтобы заполнить поле своего родительского контейнера. Это необходимо, когда у нас есть картинка, размер или соотношение сторон которой отличается от оборачивающего блока.

Традиционно, чтобы решить эту проблему, создают div и устанавливают background-image и background-size. Однако современный CSS позволяет нам просто добавить тег изображения <img> внутри, а затем применить object-fit непосредственно к селектору изображения:

img {
  width: 100%;
  object-fit: cover;
}

Возможные значения:

  • fill (по умолчанию) - ширина и высота изображения соответствуют ширине и высоте родителя. В большинстве случаев это нарушает соотношение сторон;
  • cover - изображение сохраняет свое соотношение сторон и заполняет всё пространство родителя, а его не вместившиеся части обрезаются и не отображаются;
  • contain - изображение сохраняет свое соотношение сторон и вписывается в пространство родителя;
  • none - изображение принимает исходный размер и соотношение сторон;
  • scale-down - отображается как одно из приведенных выше, в зависимости от того, какое из них выдает изображение наименьшего размера.

Давайте рассмотрим на примерах это свойство по отношению к вот такой картинке:

Свойство Демо
fill
cover
contain
none
scale-down

Object-position

Это свойство определяет, где внутри контейнера будет располагаться изображение. Оно принимает два числовых значения: одно для вертикальной оси, а другое - для горизонтальной. Эти числа могут быть в процентах, пикселях или других единицах измерения и могут быть отрицательными. Также можно использовать некоторые ключевые слова, такие как center, top, right и т.д.

По-умолчанию изображение располагается в центре контейнера, поэтому значение по-умолчанию:

img {
  object-position: center;
  /* object-position: 50% 50%; - выполнит тоже самое */
}
Поддержка браузерами
chrome
Chrome
32
firefox
Firefox
36
internet explorer
IE
 
edge
Edge
79
safari
Safari
10
opera
Opera
19