Si puede, use imágenes de fondo y establezca background-size: cover
. Esto hará que el fondo cubra todo el elemento.
CSS
div {
background-image: url(path/to/your/image.png);
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
}
Si está atascado con el uso de imágenes en línea, hay algunas opciones. Primero hay
ajuste de objeto
Esta propiedad actúa sobre imágenes, videos y otros objetos similares a background-size: cover
.
CSS
img {
object-fit: cover;
}
Lamentablemente, el soporte del navegador no es tan bueno con IE hasta la versión 11 que no lo admite en absoluto. La siguiente opción usa jQuery
CSS + jQuery
HTML
<div>
<img src="image.png" class="cover-image">
</div>
CSS
div {
height: 8em;
width: 15em;
}
Complemento jQuery personalizado
(function ($) {
$.fn.coverImage = function(contain) {
this.each(function() {
var $this = $(this),
src = $this.get(0).src,
$wrapper = $this.parent();
if (contain) {
$wrapper.css({
'background': 'url(' + src + ') 50% 50%/contain no-repeat'
});
} else {
$wrapper.css({
'background': 'url(' + src + ') 50% 50%/cover no-repeat'
});
}
$this.remove();
});
return this;
};
})(jQuery);
Usa el complemento como este
jQuery('.cover-image').coverImage();
Tomará una imagen, la configurará como imagen de fondo en el elemento contenedor de la imagen y eliminará la img
etiqueta del documento. Por último, podrías usar
CSS puro
Puede usar esto como una alternativa. La imagen se escalará para cubrir su contenedor, pero no se reducirá.
CSS
div {
height: 8em;
width: 15em;
overflow: hidden;
}
div img {
min-height: 100%;
min-width: 100%;
width: auto;
height: auto;
max-width: none;
max-height: none;
display: block;
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Espero que esto pueda ayudar a alguien, ¡feliz codificación!