You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让视频iframe在div容器内实现object-fit:cover效果?

自定义容器内视频全屏填充解决方案

原示例通过视口单位(vw/vh)实现了视频铺满整个浏览器窗口,但切换到固定尺寸的自定义容器时,原有的视口媒体查询会失效。以下是针对自定义容器的解决方案,让视频始终完全填充容器,不留空白:

核心思路

把原有的视口媒体查询替换为容器查询,让判断逻辑基于容器的宽高比而非浏览器视口。通过调整iframe尺寸,让它始终保持16:9比例并填满容器,超出部分通过overflow:hidden裁剪。

完整代码示例

HTML

<div class="video-wrapper">
  <iframe src="https://www.youtube.com/embed/biWk-QLWY7U?controls=0&showinfo=0&rel=0&autoplay=1&loop=1&mute=1" frameborder="0" controls="0" allowfullscreen></iframe>
</div>

CSS

* {
  padding: 0;
  margin: 0;
}

/* 自定义尺寸的容器,可按需修改宽高 */
.video-wrapper {
  position: relative;
  overflow: hidden;
  width: 500px;
  height: 1000px;
  /* 启用容器查询上下文 */
  container-type: size;
}

iframe {
  position: absolute;
  top: 50%;
  left: 50%;
  /* 初始尺寸匹配容器 */
  width: 100%;
  height: 100%;
  /* 居中定位,裁剪时保留视频中心区域 */
  transform: translate(-50%, -50%);
}

/* 容器宽高比≥16:9时,将视频高度设为容器宽度的56.25%(16/9的倒数) */
@container (min-aspect-ratio: 16/9) {
  iframe {
    height: 56.25%;
    width: 100%;
  }
}

/* 容器宽高比≤16:9时,将视频宽度设为容器高度的177.78%(9/16的倒数) */
@container (max-aspect-ratio: 16/9) {
  iframe {
    width: 177.78%;
    height: 100%;
  }
}

补充说明

  • 容器查询需主流浏览器支持(Chrome 105+、Firefox 110+、Safari 16+),若需兼容旧浏览器,可通过JavaScript监听容器尺寸变化,动态调整iframe样式。
  • 修改容器尺寸时,直接调整.video-wrapper的width和height即可,视频会自动适配填充。

内容的提问来源于stack exchange,提问作者David Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:35:15