模拟背景大小:覆盖<视频>或<图像>
2022-08-30 01:31:59
如何模拟 html 元素(如 或 ?background-size:cover
<video>
<img>
我希望它像这样工作
background-size: cover;
background-position: center center;
如何模拟 html 元素(如 或 ?background-size:cover
<video>
<img>
我希望它像这样工作
background-size: cover;
background-position: center center;
这是我暂时拉扯头发的东西,但我遇到了一个很棒的解决方案,它不使用任何脚本,并且可以在视频上实现完美的封面模拟,有5行CSS(如果算上选择器和括号,则为9)。这有0个边缘情况,其中它不能完美地工作,缺乏CSS3兼容性。
您可以在此处查看示例(已存档)
Timothy解决方案的问题在于它不能正确处理缩放。如果周围的元素小于视频文件,则不会缩小它。即使您为视频标签指定了很小的初始大小(例如16px x 9px),最终也会强制将其设置为其本机文件大小的最小值。使用此页面上当前投票最多的解决方案,我不可能缩小视频文件,从而产生剧烈的缩放效果。auto
但是,如果视频的宽高比已知,例如 16:9,则可以执行以下操作:
.parent-element-to-video {
overflow: hidden;
}
video {
height: 100%;
width: 177.77777778vh; /* 100 * 16 / 9 */
min-width: 100%;
min-height: 56.25vw; /* 100 * 9 / 16 */
}
如果将视频的父元素设置为覆盖整个页面(例如 ),则视频也会覆盖整个页面。position: fixed; width: 100%; height: 100vh;
如果您还希望视频居中,则可以使用 surefire 居中方法:
/* merge with above css */
.parent-element-to-video {
position: relative; /* or absolute or fixed */
}
video {
position: absolute;
left: 50%; /* % of surrounding element */
top: 50%;
transform: translate(-50%, -50%); /* % of current element */
}
当然,、 和 是 CSS3,因此,如果您需要与旧得多的浏览器兼容,则需要使用脚本。vw
vh
transform