Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force an image to fit and keep aspect ratio

Tags:

html

css

I want an image to fill the 100% of its container's width, and I want it to have a max-heigth property set to it, all this keeping the aspect ratio but allowing to lose any part of the image.

img {
   max-height:200px;
   width:100%;
}

I know a similar thing can be done with background-size property but i want to make this to an inline <img> tag.

Any idea of how could i achieve this using CSS? or javascript?

like image 352
Sebastian Hernandez Avatar asked Sep 03 '25 05:09

Sebastian Hernandez


1 Answers

You can try CSS3 object-fit, and see browser support tables.

CSS3 object-fit/object-position Method of specifying how an object (image or video) should fit inside its box. object-fit options include "contain" (fit according to aspect ratio), "fill" (stretches object to fill) and "cover" (overflows box but maintains ratio), where object-position allows the object to be repositioned like background-image does.

JSFIDDLE DEMO

.container-1 {
  width: 150px; /*any size*/
  height: 150px; /*any size*/
  border: 1px solid red;
}

.container-2 {
  width: 300px; /*any size*/
  height: 150px; /*any size*/
  border: 1px solid red;
}

.object-fit-cover {
  width: 100%;
  height: 100%;
  object-fit: cover; /*magic*/
}
<div class="container-1">
  <img class="object-fit-cover" src="https://i.sstatic.net/UJ3pb.jpg">
</div>

<br>

<div class="container-2">
  <img class="object-fit-cover" src="https://i.sstatic.net/UJ3pb.jpg">
</div>

Related Info:

  • Exploring object-fit ★ Mozilla Hacks

  • Polyfill for CSS object-fit property

like image 104
Stickers Avatar answered Sep 04 '25 19:09

Stickers



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!