Клавиша / esc

object-view-box

Кадрируем изображение с помощью CSS.

Время чтения: меньше 5 мин

Кратко

Скопировано

Свойство object-view-box задаёт, какая часть изображения должна быть видна.

Пример

Скопировано
        
          
          .cropped-element {  object-view-box: inset(20%);}
          .cropped-element {
  object-view-box: inset(20%);
}

        
        
          
        
      

Как пишется

Скопировано

Возможные значения object-view-box:

  • none — значение по умолчанию, окно отображения не задаётся;
  • <basic-shape-rect> – окно отображения задаётся в виде прямоугольника с помощью функций inset(), xywh().

Зададим область отображения через inset():

        
          
          .object-view-box-inset {  object-fit: cover;  object-view-box: inset(15% 15% 15% 15%);}
          .object-view-box-inset {
  object-fit: cover;
  object-view-box: inset(15% 15% 15% 15%);
}

        
        
          
        
      
Открыть демо в новой вкладке

А теперь через функцию xywh():

        
          
          .object-view-box-xywh {  object-fit: cover;  object-view-box: xywh(10% 10% 75% 75%);}
          .object-view-box-xywh {
  object-fit: cover;
  object-view-box: xywh(10% 10% 75% 75%);
}

        
        
          
        
      
Открыть демо в новой вкладке

Как понять

Скопировано

По своему поведению свойство object-view-box похоже на атрибут viewBox в SVG. Оно устанавливает размеры окна отображения в замещаемых элементах, вроде <img>, <video>, <canvas>. Контент, попавший в заданную область, будет виден, а остальной скроется.

Область отображения, заданную через object-view-box, браузер воспринимает в качестве исходного элемента, и свойства вроде object-fit и object-position применяются именно к ней. За счёт этого можно реализовать кадрирование изображения без изменения самого файла.

Кроме object-view-box есть и другие способы обрезки, например, overflow: hidden и clip-path. Вот в чём разница: object-view-box работает с содержимым ресурса и задаёт «кадр» внутри источника — как будто кадрируем исходный файл. А overflow: hidden и clip-path задают форму или рамку снаружи, при этом весь ресурс остаётся внутри элемента, даже если часть его не видна.

Посмотрите на разницу в примере:

Открыть демо в новой вкладке

Подсказки

Скопировано

💡 Замещаемый элемент — это HTML-элемент, отображающий внешний ресурс, например, картинку или видео. Браузер берёт содержимое не из HTML-разметки, а подставляет готовое «встроенное» представление. В CSS мы можем менять размер и расположение такого элемента, но не управлять его внутренним содержимым.

Поддержка в браузерах:
  • Chrome 104, поддерживается
  • Edge 104, поддерживается
  • Firefox, не поддерживается
  • Safari, не поддерживается
О Baseline