Nếu bạn có thể, sử dụng hình ảnh nền và thiết lập background-size: cover
. Điều này sẽ làm cho nền bao gồm toàn bộ yếu tố.
CSS
div {
background-image: url(path/to/your/image.png);
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
}
Nếu bạn bị mắc kẹt với việc sử dụng hình ảnh nội tuyến, có một vài lựa chọn. Đầu tiên, có
phù hợp với đối tượng
Thuộc tính này hoạt động trên hình ảnh, video và các đối tượng khác tương tự background-size: cover
.
CSS
img {
object-fit: cover;
}
Đáng buồn thay, hỗ trợ trình duyệt không tốt lắm với IE lên đến phiên bản 11 hoàn toàn không hỗ trợ. Tùy chọn tiếp theo sử dụng jQuery
CSS + jQuery
HTML
<div>
<img src="image.png" class="cover-image">
</div>
CSS
div {
height: 8em;
width: 15em;
}
Plugin jQuery tùy chỉnh
(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);
Sử dụng plugin như thế này
jQuery('.cover-image').coverImage();
Nó sẽ lấy một hình ảnh, đặt nó làm hình nền trên thành phần trình bao bọc của hình ảnh và xóa img
thẻ khỏi tài liệu. Cuối cùng, bạn có thể sử dụng
CSS thuần
Bạn có thể sử dụng điều này như một dự phòng. Hình ảnh sẽ được phóng to lên để che đi phần chứa của nó nhưng nó sẽ không giảm xuống.
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%);
}
Hy vọng điều này có thể giúp ai đó, hạnh phúc mã hóa!