Якщо можете, використовуйте фонові зображення та встановіть background-size: cover
. Це зробить фон покриттям всього елемента.
CSS
div {
background-image: url(path/to/your/image.png);
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
}
Якщо ви застрягли в використанні вбудованих зображень, є кілька варіантів. По-перше, є
об'єкт-придатний
Ця властивість діє на зображення, відео та інші об'єкти, схожі на background-size: cover
.
CSS
img {
object-fit: cover;
}
На жаль, підтримка браузера не така вже й велика, оскільки IE до версії 11 зовсім не підтримує її. Наступний варіант використовує jQuery
CSS + jQuery
HTML
<div>
<img src="image.png" class="cover-image">
</div>
CSS
div {
height: 8em;
width: 15em;
}
Спеціальний плагін jQuery
(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);
Використовуйте такий плагін
jQuery('.cover-image').coverImage();
Це візьме зображення, встановить його як фонове зображення на обгортковому елементі зображення та видалить img
тег із документа. Нарешті, ви можете використовувати
Чистий CSS
Ви можете використовувати це як резервний. Зображення буде масштабуватися вгору, щоб накрити контейнер, але воно не буде масштабуватися вниз.
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%);
}
Сподіваюся, це може допомогти комусь, щасливе кодування!