나는 이것이 오래되었다는 것을 알고 있지만, 위에서 본 많은 솔루션은 이미지 / 비디오가 컨테이너에 비해 너무 커서 실제로 배경 크기의 덮개처럼 행동하지 않는 문제가 있습니다. 그러나 나는 이미지와 비디오에서 작동하도록 "유틸리티 클래스"를 만들기로 결정했다. 컨테이너에 .media-cover-wrapper 클래스를 제공하고 미디어 항목 자체에 .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가 필요할 수 있지만 꽤 잘 응답하고 background-size : cover와 똑같이 작동하며 이미지 및 / 또는 비디오에서이를 사용하여 추가 SEO 가치를 얻을 수 있습니다.