Css object fit: object-fit — CSS | MDN
object-fit — CSS | MDN
Свойство object-fit
определяет, как содержимое заменяемого элемента, такого как <img>
или <video>
, должно заполнять контейнер относительно его высоты и ширины.
Для object-fit
можно указать одно из нижеперечисленных свойств.
Значения
fill
- Смещаемый контент меняет свой размер таким образом, чтобы заполнить всю область внутри блока: используется вся ширина и высота блока.
contain
- Смещаемый контент меняет свой размер таким образом, чтобы подстроится под область внутри блока пропорционально собственным параметрам: окончательный размер контента будет определён как «помещённый внутрь» блока, ограничиваясь его шириной и высотой.
cover
- Смещаемый контент меняет свой размер таким образом, чтобы сохранять свои пропорции при заполнении блока: окончательный размер контента будет определён как «покрытие» блока, ограничиваясь его шириной и высотой.
none
- Смещаемый контент не изменяет свой размер с целью заполнить пространство блока: конечный размер контента будет определён с использованием алгоритма изменения размера по умолчанию, а также размер объекта по умолчанию равен ширине и высоте смещаемого контента.
scale-down
- Контент изменяет размер, сравнивая разницу между
none
иcontain,
для того, чтобы найти наименьший конкретный размер объекта.
Правильный синтаксис
HTML Контент
<div> <h3>object-fit: fill</h3> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <h3>object-fit: contain</h3> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <h3>object-fit: cover</h3> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <h3>object-fit: none</h3> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <h3>object-fit: scale-down</h3> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> <img src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"/> </div>
CSS Контент
h3 { font-family: Courier New, monospace; font-size: 1em; margin: 1em 0 0.3em; } div { display: flex; flex-direction: column; flex-wrap: wrap; align-items: flex-start; height: 940px; } img { width: 150px; height: 100px; border: 1px solid #000; } .narrow { width: 100px; height: 150px; margin-top: 10px; } .fill { object-fit: fill; } .contain { object-fit: contain; } .cover { object-fit: cover; } .none { object-fit: none; } .scale-down { object-fit: scale-down; }
Результат
BCD tables only load in the browser
Свойства object-fit и object-position. Масштабируем пропорционально.
1. Свойство object-fit
Свойство object-fit определяет, каким образом содержимое замещаемых элементов будет подогнано к краям контейнера тега в случае, когда для элемента заданы ширина и высота, отличные от его собственных размеров.
Замещаемыми элементами являются элементы, чьи размеры и внешний вид определяются внешним ресурсом. К ним относятся элементы <img> <input type="image">,
Свойство object-fit масштабирует, обрезает или растягивает содержимое замещаемых элементов. Свойство хорошо поддерживается в последних версиях Chrome, Firefox и Safari. Для браузера IE8-11 можно использовать полифил (библиотеку, добавляющую в старые браузеры поддержку свойств, работающих в современных браузерах).
Поддержка браузерами
IE: не поддерживает
Firefox: 36.0
Chrome: 31.0
Safari: 7.1 только object-fit, 10.0 полная поддержкаOpera: 19.0
iOS Safari: 8.0 только object-fit, 10.1 полная поддержка
Opera Mini: -o-
Android: 4.4.4
Chrome for Android: 54.0
object-fit | |
---|---|
fill | Значение по умолчанию. Содержимое замещаемого элемента полностью заполняет область контейнера тега, используя его высоту и ширину. |
contain | Содержимое элемента масштабируется, выравниваясь по центру с сохранением пропорций таким образом, чтобы полностью поместиться внутри контейнера. |
cover | Содержимое элемента обрезается, выравниваясь по центру с сохранением пропорций таким образом, чтобы полностью заполнить область контейнера. |
scale-down | Содержимое элемента выбирает из двух значений none и contain то значение, которое даёт меньшие размеры. |
none | Замещаемое содержимое не изменяет свои собственные размеры, чтобы поместиться и заполнить область контейнера. |
initial | Устанавливает это свойство в значение по умолчанию. |
inherit | Наследует значение свойства от родительского элемента. |
2. Свойство object-position
Свойство object-position используется в сочетании с object-fit и задаёт положение содержимого замещаемого элемента внутри контейнера относительно координатных осей X и Y. Значение по умолчанию 50% 50%. Свойство анимируется. Не наследуется.
object-position | |
---|---|
Значения: | |
left top, left center, left bottom, right top, right center, right bottom, center top, center bottom | Позиционирование по горизонтали и вертикали задаётся с помощью пары ключевых слов. Если задано одно ключевое слово, второе примет значение center. |
px / em/ % | Указывается два значения, первое определяет расстояние между левой стороной изображения и левым краем элемента-контейнера (по горизонтали), второе значение указывает расстояние между верхней стороной изображения и верхним краем элемента-контейнера (по вертикали). Также можно использовать отрицательные значения для обрезки части контента. Процентное значение рассчитывается относительно содержимого и контейнера, в котором оно расположено. Одновременно можно комбинировать значения в |
initial | Устанавливает значение свойства в значение по умолчанию. |
inherit | Наследует значение свойства от родительского элемента. |
See the Pen vyQWme by Elena (@html5book) on CodePen.
object-fit | CSS | WebReference
Управляет соотношением сторон заменяемых элементов, таких как <img> и <video>, когда у них задана ширина или высота, а также способом масштабирования. Свойство object-fit может сохранять исходные пропорции элемента или наоборот, искажать пропорции, в угоду соблюдения размеров.
Краткая информация
Значение по умолчанию | fill |
---|---|
Наследуется | Нет |
Применяется | К <img>, <video>, <object>, <input type=»image»> |
Анимируется | Нет |
Синтаксис
object-fit: fill | contain | cover | none
Обозначения
Описание | Пример | |
---|---|---|
<тип> | Указывает тип значения. | <размер> |
A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
[ ] | Группирует значения. | [ crop || cross ] |
* | Повторять ноль или больше раз. | [,<время>]* |
+ | Повторять один или больше раз. | <число>+ |
? | Указанный тип, слово или группа не является обязательным. | inset? |
{A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
# | Повторять один или больше раз через запятую. | <время># |
Значения
- fill
- Элемент масштабируется, чтобы соответствовать заданным размерам, при этом пропорции игнорируются.
- contain
- Элемент масштабируется, чтобы целиком уместиться в заданные размеры с соблюдением пропорций.
- cover
- Элемент увеличивается или уменьшается, чтобы целиком заполнить заданную область с сохранением пропорций.
- none
- Сохраняются исходные пропорции элемента, установленные значения ширины или высоты не влияют на содержимое.
Влияние разных значений на фотографии продемонстрировано на рис. 1. Был использован следующий стиль.
img {
background: #ccc; overflow: hidden;
width: 200px; height: 200px;
}
Исходные изображения
fill
contain
cover
none
Рис. 1. Фотографии с разным значением object-fit
Песочница
Пример
<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>object-fit</title> <style> .dolphin img { object-fit: cover; height: 400px; width: 300px; } </style> </head> <body> <p><img src=»image/dolphin.jpg» alt=»Дельфин»></p> </body> </html>
Объектная модель
Объект.style.objectFit
Примечание
Edge поддерживает object-fit только для <img>.
Opera до версии 19 поддерживает свойство -o-object-fit.
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
- Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
- Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
- Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
- Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
- Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
- Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
В таблице браузеров применяются следующие обозначения.
- — свойство полностью поддерживается браузером со всеми допустимыми значениями;
- — свойство браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо свойство поддерживается лишь частично, например, не все допустимые значения действуют или свойство применяется не ко всем элементам, которые указаны в спецификации.
Число указывает версию браузера, начиная с которой свойство поддерживается.
Автор и редакторы
Автор: Влад Мержевич
Последнее изменение: 02.03.2020
Редакторы: Влад Мержевич
object-fit CSS уроки для начинающих академия
Свойство CSS object-fit
используется для указания того, как
<img> или <Video> следует изменить размер в соответствии с его контейнером.
Поддержка браузера
Номера в таблице указывают первую версию браузера, которая полностью поддерживает свойство.
Свойство | |||||
---|---|---|---|---|---|
object-fit | 31.0 | 16.0 | 36.0 | 7.1 | 19.0 |
Свойство объекта CSS-Fit
Свойство CSS object-fit
используется для указания способа изменения размера <img> или <Video> в соответствии с его контейнером.
Это свойство указывает содержимому заполнять контейнер различными способами; Например, «сохранить это соотношение сторон» или «растянуть и занять столько места, сколько возможно».
Посмотрите на следующее изображение из Парижа, которое является 400кс300 пикселей:
Однако, если мы стиль изображения выше, чтобы быть 200кс400 пикселей, он будет выглядеть так:
Пример
img {
width: 200px;
height:
400px;
}
Мы видим, что изображение сжимается в соответствии с контейнером 200кс400 пикселей, и его исходное соотношение сторон уничтожается.
Если мы используем object-fit: cover;
он будет отрезать стороны изображения,
сохранение соотношения сторон, а также заполнение пространства, как это:
Пример
img {
width: 200px;
height:
400px;
object-fit: cover;
}
Другой пример
Здесь мы имеем 2 изображения и мы хотим их заполнить ширину 50% из окна браузера и 100% из высоты.
В следующем примере мы не используем object-fit
, поэтому при изменении размера окна браузера, пропорции изображений будут уничтожены:
Пример
В следующем примере мы используем object-fit: cover;
, поэтому при изменении размера окна обозревателя сохраняется соотношение сторон изображения:
Пример
Все значения свойства объекта CSS-Fit
Свойство object-fit
может иметь следующие значения:
fill
— Это значение по умолчанию. Заменяемое содержимое задается для заполнения поля содержимого элемента. При необходимости объект будет растягиваться или сжиматься по размеруcontain
— Заменяемое содержимое масштабируется для сохранения его пропорций при установке в поле содержимого элементаcover
— Заменяемое содержимое имеет размер, чтобы сохранить его пропорции при заполнении всего содержимого поля элемента. Объект будет обрезан по размеруnone
— Заменяемое содержимое не измененоscale-down
— Размер содержимого определяется так, как если бы не было указано ни одного, ни содержащего, (что привело бы к уменьшению размера конкретного объекта)
В следующем примере демонстрируются все возможные значения object-fit
Свойство:
Пример
.fill {object-fit: fill;}
.contain {object-fit: contain;}
.cover {object-fit: cover;}
.scale-down {object-fit: scale-down;}
.none {object-fit: none;}
-o-object-fit | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS | |
10.6+ | 15.0+ |
Краткая информация
Значение по умолчанию | fill |
---|---|
Наследуется | Нет |
Применяется | К <img>, <video>, <object>, <input type=»image»> |
Процентная запись | Неприменима |
Версии CSS
Описание
Управляет соотношением сторон заменяемых элементов, таких как <img> и <video>, когда у них задана ширина или высота, а также способом масштабирования. Свойство -o-object-fit может сохранять исходные пропорции элемента или наоборот, искажать пропорции, в угоду соблюдения размеров.
Синтаксис
-o-object-fit: fill | contain | cover | none
Значения
- fill
- Элемент масштабируется, чтобы соответствовать заданным размерам, при этом пропорции игнорируются.
- contain
- Элемент масштабируется, чтобы целиком уместиться в заданные размеры с соблюдением пропорций.
- cover
- Элемент увеличивается или уменьшается, чтобы целиком заполнить заданную область с сохранением пропорций.
- none
- Сохраняются исходные пропорции элемента, установленные значения ширины или высоты не влияют на содержимое.
Влияние разных значений на фотографии продемонстрировано на рис. 1. Был использован следующий стиль.
img {
background: #ccc; overflow: hidden;
width: 200px; height: 200px;
}
Исходные изображения
fill
contain
cover
none
Рис. 1. Фотографии с разным значением -o-fit-object
Пример
HTML5CSS2.1CSS3IECrOpSaFx
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>-o-object-fit</title>
<style>
.dolphin img {
-o-fit-object: cover;
height: 400px;
width: 300px
background: #020509;
}
</style>
</head>
<body>
<p><img src="images/dolphin.jpg" alt="Дельфин"></p>
</body>
</html>
Краткий обзор «object-fit» и «object-position» — CSS-LIVE
Перевод статьи A Quick Overview of `object-fit` and `object-position с сайта css-tricks.com для css-live.ru. Автор — Роберт Рендли.
Последнее время object-fit
и object-position
— мои любимые CSS-свойства. С ними разработчики могут управлять содержимым внутри img
или video
, подобно манипулированию содержимым background
с помощью background-position
и background-size
.
Для начала, подробнее про
object-fit
Это свойство определяет, как элемент вроде img
подстраивается под доступные ширину и высоту своего содержимого. С object-fit
можно приказать содержимому заполнить этот бокс различными способами, например, «сохранить эти пропорции!» или «растянуться и занять как можно больше места!»
Вот пример:
Это изображение 400х260px. Если добавить к нему…
img { width: 200px; height: 300px; }
… то в итоге получим неуклюжее искажение, поскольку изображение сплющивается, чтобы уместиться в эти рамки:
Содержание в нашем img
займёт всё доступное пространство в своём новом боксе, созданном при изменении его высоты и ширины, «ломая» тем самым его исходные пропорции.
Чтобы и сохранить пропорции изображения и заполнить всю доступную область, воспользуемся object-fit
:
.cover { object-fit: cover; }
Слева исходное изображение, а справа — изображение обрезанное по бокам, которое теперь сохраняет наши пропорции! Может в таком масштабе это и не выглядит впечатляющим, но как только мы столкнёмся с разработкой более реалистичных интерфейсов, вот тогда-то object-fit
и проявит себя во всей красе.
Возьмём другой пример:
Здесь у нас два изображения, которые должны занимать 50% ширины окна браузера (чтобы они стояли бок о бок) и 100% высоты. Для этого воспользуемся единицами области просмотра.
img { height: 100vh; width: 50vw; }
Проблема всплывает, когда при изменении размера экрана меняются и пропорции изображения, что приводит к всевозможным странностям. А нам бы хотелось сохранить их пропорции, как и в предыдущем демо, так что для этого можно использовать тот же метод. object-fit: cover
, выручай!
Попробуйте снова изменить размер экрана. Странности с пропорциями исчезли, так ведь? Это также весьма полезно для изображений с различными размерами, поскольку они фактически будут обрезаны по границам бокса.
cover
— лишь одно из многих значений для object-fit
, о которых более подробно можно почитать в справочнике, но пока что это единственное значение, которое кажется мне наиболее полезным для повседневной разработки интерфейсов.
Перейдём к следующему из моих любимых свойств:
object-position
.Воспользуемся уже знакомым изображением и этими стилями:
img { background: yellow; height: 180px; object-fit: none; }
Здесь стоит отметить пару вещей: для правильной работы object-position
нужно объявить размеры для изображения, а чтобы изображение не заполняло весь бокс (как это происходит по умолчанию), а его можно было сдвинуть, нужно установить ему object-fit: none
. Это может показаться странным, но всё дело в том, что по умолчанию для изображения устанавливается object-fit: fill
, даже если не объявлять его специально.
Что касается поведения по умолчанию, без значения object-position
центрирует все объекты по горизонтали и вертикали:
img { background: yellow; height: 180px; object-fit: none; object-position: 50% 50%; /* Даже если это не объявлять, изображение всё равно отцентрируется. */ }
Первое значение смещает изображение влево или вправо, а второе — вверх или вниз. Здесь можно поэкспериментировать с этими значениями:
Мы можем даже «протолкнуть» изображение внутрь его области контента, так что можно будет увидеть background-color
, который мы задали раньше
Но насколько это полезно? Хороший вопрос! Вот в недавнем проекте мне потребовалось сдвинуть к центру конкретный участок изображения, и тем самым привлечь внимание читателя. Загрузка нового изображения не требуется, поэтому в этом случае не понадобится элемент <picture>
, всё, что мы хотели — немного сдвинуть изображение.
Помимо смещения фокуса на нужную часть изображения, не очень представляю, для чего еще это может быть полезно на практике. Но я повозился с object-position
, чтобы продемонстрировать, как можно скрыть части изображения, а затем по клику показывать его по кусочкам, как в этом демо:
Я не эспериментировал, как и для чего можно использовать это для элементов <video>
. Может быть, видео на весь экран, заполняющее его без черных полос по краям? Чтобы полностью раскрыть потенциал этих свойств, изучить предстоит ещё очень много.
Что с поддержкой?
В целом, неплохо!
object-fit
поддерживается везде, кроме IE/Edge. А object-position
поддерживается везде, кроме Safari и IE/Edge.
P.S. Это тоже может быть интересно:
CSS свойство object-fit
Свойство object-fit определяет, как должен измениться размер элемента, чтобы он поместился в блоке.
Свойство object-fit дает возможность поместить контент изображения таким образом, чтобы он соответствовал размерам, указанным в таблице стилей.
При помощи значений свойства можно увеличить, уменьшить, обрезать или растянуть контент таким образом, чтобы он соответствовал указанным размерам ширины и высоты. Свойство имеет пять значений:
- fill
- contain
- cover
- none
- scale-down
Синтаксис¶
object-fit: fill | contain | cover | scale-down | none | initial | inherit;
Пример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок документа</title>
<style>
img.tree {
width: 200px;
height: 400px;
object-fit: fill;
}
</style>
</head>
<body>
<h3>Пример свойства object-fit</h3>
<h4>Оригинальное изображение:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
<h4>Значение fill:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
</body>
</html>
Попробуйте сами!Пример со значением «cover», где края изображения обрезаны, а пропорции сохранены:
Пример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок документа</title>
<style>
img.tree {
width: 200px;
height: 400px;
object-fit: cover;
}
</style>
</head>
<body>
<h3>Пример свойства object-fit</h3>
<h4>Оригинальное изображение:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
<h4>Значение cover:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
</body>
</html>
Попробуйте сами!Пример со значением «contain»:
Пример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок документа</title>
<style>
img.tree {
width: 200px;
height: 400px;
object-fit: contain;
}
</style>
</head>
<body>
<h3>Пример свойства object-fit</h3>
<h4>Оригинальное изображение:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
<h4>Значение contain:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
</body>
</html>
Попробуйте сами!Пример со значением «scale-down», где размер изображения уменьшен:
Пример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок документа</title>
<style>
img.tree {
width: 200px;
height: 400px;
object-fit: scale-down;
}
</style>
</head>
<body>
<h3>Пример свойства object-fit</h3>
<h4>Оригинальное изображение:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
<h4>Значение scale-down:</h4>
<img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" alt="Tree">
</body>
</html>
Попробуйте сами!Значения¶
object-fit — CSS: каскадные таблицы стилей
Свойство object-fit
CSS устанавливает, как содержимое заменяемого элемента, такого как
или , должно быть изменено, чтобы соответствовать его контейнеру.
Вы можете изменить выравнивание объекта содержимого замененного элемента внутри поля элемента, используя свойство object-position
.
объект-соответствие: содержать;
объект подходит: крышка;
соответствие объекта: заполнить;
соответствие объекта: нет;
подгонка объекта: уменьшение масштаба;
соответствие объекта: наследование;
объектное соответствие: начальное;
соответствие объекта: вернуться;
соответствие объекта: не задано;
Свойство подгонки под объект
задается как одно ключевое слово, выбранное из списка значений ниже.
Значения
-
содержат
- Замененное содержимое масштабируется для сохранения соотношения сторон при размещении в поле содержимого элемента. Весь объект заполняет коробку, сохраняя при этом его соотношение сторон, поэтому объект будет «в почтовом ящике», если его соотношение сторон не совпадает с соотношением сторон коробки.
-
крышка
- Размер замененного содержимого изменяется таким образом, чтобы сохранить его соотношение сторон при заполнении всего поля содержимого элемента.Если соотношение сторон объекта не соответствует соотношению сторон его блока, то объект будет обрезан по размеру.
-
заполнить
- Размер замененного содержимого соответствует размеру поля содержимого элемента. Весь объект полностью заполнит коробку. Если соотношение сторон объекта не соответствует соотношению сторон его блока, то объект будет растянут по размеру.
-
нет
- Размер замененного содержимого не изменяется.
-
в уменьшенном масштабе
- Размер содержимого изменяется так, как если бы
не было указано
илисодержит
, в зависимости от того, что приведет к уменьшению размера конкретного объекта.
заполнить | содержать | крышка | нет | scale-down
Настройка объекта для изображения
HTML
<раздел>
размер объекта: заливка
соответствие объекта: содержать
размер объекта: крышка
размер объекта: нет
размер объекта: уменьшение
CSS
h3 {
семейство шрифтов: Courier New, моноширинный;
размер шрифта: 1em;
маржа: 1em 0 0.3em;
}
img {
ширина: 150 пикселей;
высота: 100 пикселей;
граница: 1px solid # 000;
маржа: 10px 0;
}
.узкий {
ширина: 100 пикселей;
высота: 150 пикселей;
}
.наполнять {
соответствие объекта: заполнить;
}
.содержать {
соответствие объекта: содержать;
}
.обложка {
объект подходит: крышка;
}
.никто {
соответствие объекта: нет;
}
.уменьшать {
подгонка объекта: уменьшение масштаба;
}
Результат
таблицы BCD загружаются только в браузере
объект-позиция — CSS: каскадные таблицы стилей
Свойство CSS object-position
задает выравнивание содержимого выбранного замененного элемента внутри поля элемента.Области поля, которые не покрыты объектом заменяемого элемента, будут отображать фон элемента.
Вы можете настроить, как внутренний размер объекта заменяемого элемента (то есть его естественный размер) корректируется так, чтобы он соответствовал рамке элемента, используя свойство object-fit
.
позиция объекта: центр вверху;
позиция объекта: 100px 50px;
объект-позиция: наследовать;
объект-позиция: начальная;
объект-позиция: вернуться;
объект-позиция: не задано;
Значения
-
<позиция>
- От одного до четырех значений, определяющих 2D-положение элемента.Могут использоваться относительные или абсолютные смещения.
Примечание: Положение может быть установлено таким образом, чтобы заменяемый элемент отображался за пределами своего поля.
Начальное значение | 50% 50% | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Применимо к | замененным элементам | |||||||||||||||
Унаследовано | да | |||||||||||||||
Вычисленное значение | , как указано | |||||||||||||||
Тип анимации | повторяемый список простого списка длины, процента или вычисления |
Позиционирование содержимого изображения
HTML
Здесь мы видим HTML, который включает два элемента
, каждый из которых отображает логотип MDN.
CSS
CSS включает стиль по умолчанию для самого элемента
, а также отдельные стили для каждого из двух изображений.
img {
ширина: 300 пикселей;
высота: 250 пикселей;
граница: сплошной черный 1px;
цвет фона: серебристый;
маржа справа: 1em;
соответствие объекта: нет;
}
# object-position-1 {
позиция объекта: 10 пикселей;
}
# object-position-2 {
позиция объекта: 100% 10%;
}
Первое изображение расположено так, что его левый край вставлен на расстоянии 10 пикселей от левого края рамки элемента.Второе изображение располагается так, чтобы его правый край был заподлицо с правым краем рамки элемента, и на 10% ниже высоты рамки элемента.
Результат
таблицы BCD загружаются только в браузере
Замененные элементы — CSS: каскадные таблицы стилей
В CSS заменяемый элемент — это элемент, представление которого выходит за рамки CSS; это внешние объекты, представление которых не зависит от модели форматирования CSS.
Проще говоря, это элементы, на содержимое которых не влияют стили текущего документа. С помощью CSS можно изменить положение заменяемого элемента, но не содержимое самого замененного элемента. Некоторые замененные элементы, такие как элементы
, могут иметь собственные таблицы стилей, но они не наследуют стили родительского документа.
Единственное другое влияние, которое CSS может оказать на заменяемый элемент, — это наличие свойств, которые поддерживают управление позиционированием содержимого элемента в его блоке.Дополнительную информацию см. В разделе «Управление положением объекта в поле содержимого».
Типичные заменяемые элементы:
Некоторые элементы считаются заменяемыми только в определенных случаях:
В спецификации HTML также говорится, что элемент
может быть заменен, потому что
элементов типа «image»
заменяются элементами, аналогичными
. Однако другие элементы управления формы, включая другие типы элементов
, явно указаны как незамещенные элементы (спецификация описывает их отрисовку для конкретной платформы по умолчанию с помощью термина «Виджеты»).
Объекты, вставленные с использованием свойства содержимого CSS , являются анонимными заменяемыми элементами . Они «анонимны», потому что не существуют в разметке HTML.
CSS обрабатывает замененные элементы специально в некоторых случаях, например, при вычислении полей и некоторых автоматических значений
.
Обратите внимание, что некоторые замененные элементы, но не все, имеют внутренние размеры или определенную базовую линию, которая используется некоторыми свойствами CSS, такими как vertical-align
.Только замененные элементы могут иметь внутренние размеры.
Управление положением объекта в поле содержимого
Некоторые свойства CSS могут использоваться для указания того, как объект, содержащийся в заменяемом элементе, должен располагаться в области поля элемента. Они определены в спецификациях модуля изображений CSS уровня 3 и модуля изображений CSS уровня 4:
-
Подходит для объекта
- Определяет, как объект содержимого заменяемого элемента должен соответствовать блоку содержащего элемента.
-
объект-позиция
- Задает выравнивание объекта содержимого заменяемого элемента в пределах поля элемента.
- HTML Spec
- Ключевые концепции CSS: Синтаксис CSS, по правилу Комментарии, специфичность и наследование, коробка, режимы компоновки и модели визуального форматирования, и падение маржи, или начальный, вычислено, решено, указано, использовал, и фактические значения. Определения синтаксиса значений, сокращенные свойства и заменил элементы.
рендеринг изображений - CSS: каскадные таблицы стилей
Свойство рендеринга изображений
CSS устанавливает алгоритм масштабирования изображения. Свойство применяется к самому элементу, к любым изображениям, установленным в его других свойствах, и к его потомкам.
Пользовательский агент будет масштабировать изображение, когда автор страницы указывает размеры, отличные от его естественного размера. Масштабирование также может происходить из-за взаимодействия с пользователем (масштабирование). Например, если естественный размер изображения составляет 100 × 100 пикселей
, , но его фактические размеры составляют 200 × 200 пикселей
(или 50 × 50 пикселей
), то изображение будет увеличено (или уменьшено) с использованием алгоритм, указанный в рендеринг изображений
.Это свойство не влияет на немасштабированные изображения.
рендеринг изображений: авто;
рендеринг изображений: четкие края;
рендеринг изображений: пиксельный;
рендеринг изображений: наследование;
рендеринг изображений: начальный;
рендеринг изображений: вернуться;
рендеринг изображений: не задано;
Значения
-
авто
- Алгоритм масштабирования зависит от UA. Начиная с версии 1.9 (Firefox 3.0), Gecko использует билинейную передискретизацию (высокое качество).
-
гладкая
- Изображение должно быть масштабировано с помощью алгоритма, который максимизирует внешний вид изображения.В частности, приемлемы алгоритмы масштабирования, позволяющие «сглаживать» цвета, такие как билинейная интерполяция. Это предназначено для изображений, например фотографий.
-
качественный
- Идентично
smooth
, но с предпочтением более качественного масштабирования. Если системные ресурсы ограничены, изображения свысокого качества
должны иметь приоритет над изображениями с любым другим значением при рассмотрении того, какие изображения ухудшить качество и в какой степени. -
четкие края
- Изображение должно быть масштабировано с помощью алгоритма, который сохраняет контраст и края изображения и не сглаживает цвета или не размывает изображение в процессе.Подходящие алгоритмы включают в себя алгоритмы масштабирования ближайшего соседа и другие алгоритмы масштабирования без сглаживания, такие как 2 × SaI и алгоритмы семейства hqx. Это значение предназначено для изображений с пиксельной графикой, например, в браузерных играх.
-
с пикселями
- При увеличении масштаба изображения необходимо использовать алгоритм ближайшего соседа, чтобы изображение выглядело состоящим из больших пикселей. При уменьшении это то же самое, что
auto
.
Примечание: Значения optimizeQuality
и optimizeSpeed
, присутствующие в раннем черновике (и исходящие из его SVG-аналога image-rendering
), определены как синонимы для значений smooth
и пикселей
соответственно.
авто | четкие края | пикселированный
Установка алгоритмов масштабирования изображения
На практике правила пиксельных
и четких краев
могут быть объединены, чтобы обеспечить некоторую альтернативу друг другу. (Просто добавьте фактические правила к запасному варианту.) Canvas API может предоставить запасное решение для пиксельной
посредством ручной обработки данных изображения или с помощью imageSmoothingEnabled
.
CSS
.auto {
рендеринг изображений: авто;
}
.pixelated {
-ms-режим интерполяции: ближайший сосед;
рендеринг изображений: пиксельный;
}
.crisp-Edge {
рендеринг изображений: -webkit-optimize-Contrast;
рендеринг изображений: четкие края;
}
Результат
Таблицы BCD загружаются только в браузере
Примечание: Хотя с четкими краями
должен использовать средство масштабирования пиксельной графики, как в примере спецификации, на практике ни один из браузеров (по состоянию на январь 2020 года) этого не делает.В Firefox с четкими краями
интерпретируется как ближайший сосед, с пикселями
не поддерживается, а auto
интерполируется как трилинейный или линейный.
Информацию о поведении в Chromium и Safari (WebKit) см. В функциях GetInterpolationQuality
и CSSPrimitiveValue :: operator ImageRendering ()
соответственно.
Соответствие объекта CSS Свойство
Свойство CSS object-fit
используется, чтобы указать, как
Размер или
Соответствие объекта CSS Свойство
Свойство CSS object-fit
используется для указания того, как или
Это свойство указывает содержимому заполнить контейнер различными способами; Такие как "сохранить это соотношение сторон" или "растянуть и занять столько места, сколько возможно ».
Посмотрите на следующее изображение из Парижа. Это изображение имеет ширину 400 пикселей и высоту 300 пикселей:
Однако, если мы стилизуем изображение выше на половину его ширины (200 пикселей) и такой же высоты (300 пикселей), это будет выглядеть так:
Мы видим, что изображение сжимается, чтобы поместиться в контейнер размером 200x300 пикселей. (его исходное соотношение сторон уничтожено).
Здесь появляется свойство object-fit
дюйм. Свойство объектного соответствия
может принимать одно из
следующие значения:
-
заливка
- это значение по умолчанию. Размер изображения изменяется, чтобы заполнить данное измерение. При необходимости изображение будет растянуто или сжато, чтобы соответствовать -
содержат
- Изображение сохраняет свое соотношение сторон, но его размер изменяется в соответствии с заданным размером -
крышка
- Изображение сохраняет свое соотношение сторон и заполняет данное измерение.Изображение будет обрезано по размеру -
нет
- Размер изображения не изменен -
в уменьшенном масштабе
- изображение уменьшено до самой маленькой версиинет
илисодержать
Использование объекта: крышка;
Если использовать object-fit: cover;
изображение сохраняет свое соотношение сторон
и заполняет данное измерение. Изображение будет обрезано по размеру:
Использование object-fit: contain;
Если мы используем object-fit: contain;
изображение
сохраняет свое соотношение сторон, но его размер изменяется в соответствии с заданным размером:
Использование подгонки объекта: заливка;
Если мы используем object-fit: fill;
изображение
изменен, чтобы заполнить заданный размер.При необходимости изображение будет
растянуты или сжаты, чтобы соответствовать:
Использование подгонки объекта: нет;
Если мы используем object-fit: none;
изображение не
изменен размер:
Использование подгонки объекта: уменьшение масштаба;
Если мы используем object-fit: scale-down;
изображение
уменьшено до самой маленькой версии нет
или содержат
:
Пример
img {
width: 200px;
высота:
300 пикселей;
размер объекта: уменьшение;
}
Другой пример
Здесь у нас есть два изображения, и мы хотим, чтобы они занимали 50% ширины окна браузера и 100% высоты.
В следующем примере мы НЕ используем object-fit
, поэтому, когда мы изменяем размер окна браузера, соотношение сторон изображений будет уничтожено:
В следующем примере мы используем object-fit: cover;
, поэтому, когда мы изменяем размер окна браузера, соотношение сторон изображений
сохранилось:
Соответствие объектам CSS Другие примеры
В следующем примере демонстрируются все возможные значения свойства object-fit
.
в одном примере:
Пример
.fill {object-fit: fill;}
.contain {object-fit: contain;}
.cover {object-fit: cover;}
.scale-down {object-fit: scale-down;}
.none { соответствие объекта: нет;}
CSS Object- * Свойства
В следующей таблице перечислены свойства объекта CSS - *:
Имущество | Описание |
---|---|
по объекту | Определяет, как изменить размер или |
объект-позиция | Задает расположение или |
Соответствие объекта CSS
Пример
Обрежьте края изображения, сохранив соотношение сторон, и заполните пространство:
img.a {
width: 200px;
высота:
400px;
объект подходит: крышка;
}
Определение и использование
Свойство object-fit
используется для указания того, как или
Это свойство указывает содержимому заполнить контейнер различными способами; Такие как "сохранить это соотношение сторон" или "растянуть и занять столько места, сколько возможно ».
Значение по умолчанию: | посмотреть отдельные свойства |
---|---|
Унаследовано: | № |
Анимация: | нет.Читать о анимации |
Версия: | CSS3 |
Синтаксис JavaScript: | объект .style.objectFit = "cover" Попробуй |
Поддержка браузера
Числа в таблице указывают первую версию браузера, полностью поддерживающую свойство.
Имущество | |||||
---|---|---|---|---|---|
по объекту | 31.0 | 16,0 | 36,0 | 7,1 | 19,0 |
Синтаксис CSS
соответствие объекта: заполнить | содержать | обложку | уменьшить | нет | начальный | наследование;
Значения свойств
Значение | Описание | Попробуй |
---|---|---|
заполнить | Это значение по умолчанию. Размер заменяемого содержимого соответствует размеру элемента поле содержимого.При необходимости объект будет растягиваться или сжиматься, чтобы соответствовать | мм.Попробуй » |
содержат | Замененное содержимое масштабируется для сохранения соотношения сторон при размещении в поле содержимого элемента | Попробуй » |
крышка | Размер замененного содержимого изменяется таким образом, чтобы сохранить его соотношение сторон при заполнении всего поля содержимого элемента. Объект будет обрезан по размеру | Попробуй » |
нет | Размер замененного содержимого не изменился | Попробуй » |
в уменьшенном масштабе | Размер содержимого задан так, как если бы он не был указан или содержал бы его (это привело бы к уменьшению размера конкретного объекта) | Попробуй » |
начальный | Устанавливает для этого свойства значение по умолчанию.Читать о начальных | |
унаследовать | Наследует это свойство от своего родительского элемента. Читать о наследстве |
связанные страницы
Учебное пособие по CSS: соответствие объектам CSS
Ссылка CSS: CSS object-position
Ссылка на HTML DOM: свойство objectFit
A Краткий обзор «подгонка объекта» и «положение объекта»
object-fit
и object-position
- два моих любимых свойства CSS в последнее время.Они дают разработчикам контроль над содержимым внутри img
или видео
аналогично тому, как мы можем манипулировать содержимым фона
с background-position
и background-size
.
Во-первых, давайте рассмотрим
объектно-подходящего
. Это свойство определяет, как элемент, например img
, реагирует на ширину и высоту своего поля содержимого. С object-fit
мы можем указать содержимому заполнить это поле различными способами, например, «сохранить это соотношение сторон!» или «потянитесь и займите как можно больше места!»
Вот пример:
Это изображение имеет размер 400 x 260 пикселей.Если мы стилизуем это изображение так…
img {
ширина: 200 пикселей;
высота: 300 пикселей;
}
… тогда мы получаем неудобное искажение, потому что это изображение сжимается, чтобы соответствовать этому контейнеру:
См. Перо 1b15cf30a6226d9f419b4f765458a059 Робина Рендла (@robinrendle) на CodePen.
Содержимое нашего img
займет все доступное пространство внутри нового блока, который мы создали, когда мы изменили его высоту и ширину, тем самым разрушив его исходное соотношение сторон.
Чтобы сохранить соотношение сторон изображения и одновременно заполнить пространство, мы можем использовать object-fit
:
.cover {
объект подходит: крышка;
}
См. Pen 7080df9cb7158c0860b8a66db9667a7d Робина Рендла (@robinrendle) на CodePen.
Изображение слева является нашим оригиналом, а изображение справа обрезало края изображения, теперь сохраняя наше соотношение сторон! В таком масштабе это может показаться не особенно интересным, но как только мы перейдем к разработке более реалистичных интерфейсов, мощь object-fit
раскрывается.
Возьмем другой пример:
См. Pen WrBzey от CSS-Tricks (@ css-tricks) на CodePen.
Здесь у нас есть два изображения, и мы хотим, чтобы они занимали 50% ширины окна браузера (чтобы они располагались рядом) и 100% высоты. Это можно сделать с помощью единиц просмотра:
img {
высота: 100вх;
ширина: 50вв;
}
Проблема в том, что, когда мы изменяем размер браузера, мы меняем соотношение сторон изображений, что может вызвать всевозможные странности.Вместо этого мы хотим сохранить их соотношение сторон, как в предыдущей демонстрации, и мы можем использовать точно такой же метод для этого. object-fit: крышка
спешит на помощь!
См. Pen YwbeoG от CSS-Tricks (@ css-tricks) на CodePen.
Попробуйте изменить размер браузера еще раз. Никаких странностей с соотношением сторон, правда? Это также чрезвычайно полезно, если у нас есть изображения разных размеров, потому что они будут эффективно обрезаны их ограничивающей рамкой.
cover
- лишь одно из многих значений для объектно-подходящего
, о большем из которых вы можете прочитать в записи Альманаха, но пока это единственное значение, которое я считаю наиболее полезным в повседневной жизни. -дневная разработка интерфейса.
Давайте перейдем к следующей моей любимой вещи:
объект-позиция
.Мы настроим все, используя то же изображение, что и раньше, и следующие стили:
img {
фон: желтый;
высота: 180 пикселей;
соответствие объекта: нет;
}
Здесь следует отметить два момента: нам нужно объявить размеры для нашего изображения, чтобы object-position
работало правильно, и нам также нужно установить object-fit
на none
, чтобы изображение можно было перемещать. вместо того, чтобы заполнять все поле, как это было бы по умолчанию.Это становится более логичным, когда вы видите, что по умолчанию для объектно-подходящего
на изображении заливки
, даже если вы не объявляете это.
Говоря о значениях по умолчанию, object-position
центрирует все объекты по горизонтали и вертикали без значения:
img {
фон: желтый;
высота: 180 пикселей;
соответствие объекта: нет;
позиция объекта: 50% 50%; / * даже если мы этого не объявляем, изображение все равно будет центрировано * /
}
Первое значение перемещает изображение влево или вправо, а второе - вверх или вниз.Мы можем поэкспериментировать с этими значениями здесь:
См. Положение объекта «Перо» Робина Рендла (@robinrendle) на CodePen.
Мы можем даже подтолкнуть изображение внутри его содержимого, чтобы мы могли показать background-color
, который мы установили ранее.
Но чем это полезно? Хороший вопрос! Что ж, в недавнем проекте я обнаружил, что определенную часть изображения нужно переместить к центру, чтобы привлечь внимание читателя. Нам не нужно было загружать новое изображение, поэтому в данном случае нам не понадобился элемент
, все, что мы хотели сделать, это немного переместить изображение.
Помимо перемещения фокуса изображения, я не уверен, для чего еще это свойство может быть полезно в практическом смысле. Но я возился с object-position
, чтобы показать, как можно скрыть части изображения, а затем раскрыть его фрагменты щелчком, как в этой демонстрации:
См. Спрайт Pen SVG с позицией объекта Робина Рендла (@robinrendle) на CodePen.
Я не экспериментировал с тем, как и почему вы можете использовать это для элементов
.Возможно, полноэкранное видео до всех краев? Когда дело доходит до этих свойств, есть еще много чего узнать и изучить.