Если можете, используйте фоновые изображения и установите 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%);
}
Надеюсь, это может кому-то помочь, счастливое кодирование!