object-fit property determines how the content of a replaced element is resized to fit inside its container on a web page.
A replaced element is an element whose contents are not affected by CSS in the current document.
An example of a replaced element is the
<img> tag. We can specify the position of the image, but we can't actually influence the contents of the image displayed inside the
<img> tag using CSS.
Let's look at a few examples of how we can use the
object-fit property to influence how an image is resized to fit inside its container element (i.e. the
The behaviour we see is applicable to all other replaced elements as well. Some other examples of replaced elements apart from
<video>. This page on MDN has more information about replaced elements.
Consider the following two images of dimensions 100x150 and 250x300 respectively:
We will place both images in
<img> tags with a width and height of
200px and see how the various
object-fit property values affect how the images are resized. I have given the
<img> tag a gray border so that its edges are easy to identify.
object-fit CSS property is used on the
This is the default value of the
object-fit property. With this value, the image inside an
<img> tag will be resized to the size of the container (i.e. the
As you can see, if the aspect ratio of the container and the
<img> tag aren't the same, the image will be stretched.
With this value, the image will be resized with its aspect ratio maintained so that the entire image fits within the container.
As you can see, if the aspect ratio of the image is different from that of the
<img> tag, then there will be a portion of the container that doesn't contain the image.
The image is resized with its aspect ratio maintained for this value as well. However, the image will be resized so that it doesn't leave any empty space in the container like with
If the aspect ratio of the image is different from that of the container, then there will be parts of the image that are clipped off.
With this value, the image is not resized at all and maintains its original dimensions. If the image is smaller than the container, the entire image is displayed with its original size. If the image is bigger than the container, it is clipped off.
This value behaves as if the
object-fit property has either the value
none or the value
contain depending on which one results in a smaller image.
This means that images smaller than the container size remain the same size (like with
object-fit: none) and images that are bigger than the container size are resized to fit the container (like with