如何使固定高度全宽容器完全覆盖内部嵌入的Vimeo iframe视频
固定高度容器铺满iframe解决方案
你写的object-fit属性仅对<img>、<video>这类可替换元素生效,<iframe>属于内嵌框架元素,不支持该属性,所以无法直接实现类似video的cover铺满效果。同时你的代码还存在两个可优化点:
- 容器未设置
overflow: hidden,无法裁剪iframe超出容器的部分 - CSS选择器写的
.video-container .Headline大写开头,和HTML里的class="headline"小写不匹配,文字样式会失效
修复后完整代码
<div class="video-container"> <!-- 如果是做背景视频,建议给Vimeo地址加&background=1参数,会自动隐藏控制条、适配容器 --> <iframe src="https://player.vimeo.com/video/1084537?h=b1b3ab5aa2&background=1"></iframe> <div class="headline"> <h1>Lorem dolor</h1> <h2>Lorem dolor ipsuim si<br />Lorem dolor ipsum lorem</h2> </div> </div> <style> .video-container { height: 500px; width: 100%; position: relative; /* 新增:裁剪超出容器的iframe内容 */ overflow: hidden; } .video-container iframe { /* 新增:设置最小宽高保证视频始终覆盖容器 */ min-width: 100%; min-height: 100%; /* 用定位+transform让iframe居中,超出部分被容器裁剪,实现cover效果 */ position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); /* 调整宽高比例,适配常见16:9视频,你可以根据自己的视频比例调整这个值 */ width: calc(500px * 16 / 9); height: calc(100vw * 9 / 16); z-index: 0; border: none; } .video-container .headline{ color: #fff; z-index: 1; position: relative; text-align: center; padding: 10px; top: 50%; transform: translateY(-50%); } .video-container .headline h1, .video-container .headline h2{ color: #ffffff; margin: 0; } </style>
适配说明
如果你的视频比例不是16:9,只需要调整iframe的宽高计算参数即可,比如4:3的视频就把16/9换成4/3。如果不需要做自动播放的背景视频,去掉src里的&background=1参数即可。
内容的提问来源于stack exchange,提问作者LDX
相关产品推荐
相关产品推荐

