Tôi biết điều này đã cũ, tuy nhiên nhiều giải pháp tôi thấy ở trên có vấn đề với hình ảnh / video quá lớn so với vùng chứa nên không thực sự hoạt động như bìa kích thước nền. Tuy nhiên, tôi quyết định tạo "lớp tiện ích" để nó hoạt động cho hình ảnh và video. Bạn chỉ cần cung cấp cho vùng chứa lớp .media-cover-Wrapper và chính mục phương tiện là lớp .media-cover
Sau đó, bạn có jQuery sau đây:
function adjustDimensions(item, minW, minH, maxW, maxH) {
item.css({
minWidth: minW,
minHeight: minH,
maxWidth: maxW,
maxHeight: maxH
});
} // end function adjustDimensions
function mediaCoverBounds() {
var mediaCover = $('.media-cover');
mediaCover.each(function() {
adjustDimensions($(this), '', '', '', '');
var mediaWrapper = $(this).parent();
var mediaWrapperWidth = mediaWrapper.width();
var mediaWrapperHeight = mediaWrapper.height();
var mediaCoverWidth = $(this).width();
var mediaCoverHeight = $(this).height();
var maxCoverWidth;
var maxCoverHeight;
if (mediaCoverWidth > mediaWrapperWidth && mediaCoverHeight > mediaWrapperHeight) {
if (mediaWrapperHeight/mediaWrapperWidth > mediaCoverHeight/mediaCoverWidth) {
maxCoverWidth = '';
maxCoverHeight = '100%';
} else {
maxCoverWidth = '100%';
maxCoverHeight = '';
} // end if
adjustDimensions($(this), '', '', maxCoverWidth, maxCoverHeight);
} else {
adjustDimensions($(this), '100%', '100%', '', '');
} // end if
}); // end mediaCover.each
} // end function mediaCoverBounds
Khi gọi, hãy đảm bảo thay đổi kích thước trang:
mediaCoverBounds();
$(window).on('resize', function(){
mediaCoverBounds();
});
Sau đó, CSS sau:
.media-cover-wrapper {
position: relative;
overflow: hidden;
}
.media-cover-wrapper .media-cover {
position: absolute;
z-index: -1;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
Vâng, nó có thể yêu cầu jQuery nhưng nó đáp ứng khá tốt và hoạt động chính xác như kích thước nền: bìa và bạn có thể sử dụng nó trên hình ảnh và / hoặc video để có thêm giá trị SEO.