ฉันรู้ว่านี่เก่า แต่วิธีแก้ปัญหาหลายอย่างที่ฉันเห็นด้านบนมีปัญหากับรูปภาพ / วิดีโอที่มีขนาดใหญ่เกินไปสำหรับคอนเทนเนอร์ดังนั้นจึงไม่ทำหน้าที่เหมือนฝาครอบพื้นหลังขนาดจริง อย่างไรก็ตามฉันตัดสินใจที่จะสร้าง "ยูทิลิตี้คลาส" เพื่อให้สามารถทำงานกับรูปภาพและวิดีโอได้ คุณเพียงแค่ให้คอนเทนเนอร์คลาส. media-cover-wrapper และไอเท็มสื่อเป็น class .media-cover
จากนั้นคุณมี jQuery ต่อไปนี้:
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
เมื่อโทรติดต่อตรวจสอบให้แน่ใจว่าดูแลการปรับขนาดหน้า:
mediaCoverBounds();
$(window).on('resize', function(){
mediaCoverBounds();
});
จากนั้น CSS ต่อไปนี้:
.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%);
}
ใช่มันอาจต้อง jQuery แต่มันตอบสนองได้ดีและทำหน้าที่เหมือนกับขนาดพื้นหลัง: ครอบคลุมและคุณสามารถใช้มันกับภาพและ / หรือวิดีโอเพื่อรับค่า SEO ที่พิเศษ