Se puoi, usa le immagini di sfondo e imposta background-size: cover
. Questo farà sì che lo sfondo copra l'intero elemento.
CSS
div {
background-image: url(path/to/your/image.png);
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
}
Se sei bloccato con l'utilizzo di immagini in linea ci sono alcune opzioni. Prima di tutto
oggetto-fit
Questa proprietà agisce su immagini, video e altri oggetti simili background-size: cover
.
CSS
img {
object-fit: cover;
}
Purtroppo, il supporto del browser non è eccezionale con IE fino alla versione 11 che non lo supporta affatto. L'opzione successiva utilizza jQuery
CSS + jQuery
HTML
<div>
<img src="image.png" class="cover-image">
</div>
CSS
div {
height: 8em;
width: 15em;
}
Plugin jQuery personalizzato
(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 il plugin in questo modo
jQuery('.cover-image').coverImage();
Prende un'immagine, la imposta come immagine di sfondo sull'elemento wrapper dell'immagine e rimuove il img
tag dal documento. Infine potresti usare
CSS puro
È possibile utilizzare questo come fallback. L'immagine si ingrandirà per coprire il suo contenitore ma non si ridimensionerà.
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%);
}
Spero che questo possa aiutare qualcuno, buona programmazione!