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

如何在16:9比例视频上实现自适应窗口的响应式div精准定位

解决方案

核心思路是让包裹视频和定位元素的父容器#video-container始终保持16:9宽高比,且尺寸和实际渲染的视频区域完全重合,此时子元素的百分比定位会自动跟随视频同步缩放,位置始终精准。

修改后的完整CSS代码

/* 首先修正原有CSS的错误:#video-obj本身就是video元素,不需要再加后代选择器video */
#video-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  /* 固定16:9宽高比 */
  aspect-ratio: 16/9;
  /* 最大宽高不超过窗口,保证始终完整显示在视口中 */
  max-width: 100vw;
  max-height: 100vh;
  overflow: hidden;
}

#video-obj {
  width: 100%;
  height: 100%;
  /* 保证视频不变形,填满容器 */
  object-fit: cover;
}

/* 两个定位div的原有百分比参数不用修改,现在百分比是相对于16:9的父容器,和视频完全匹配 */
#positioned-div1 {
  position: absolute;
  left: 55%;
  top: 53%;
  width: 24%;
  height: 24%;
  background-color: rgba(38, 0, 255, 0.5);
  z-index: 1;
}

#positioned-div2 {
  position: absolute;
  left: 38%;
  top: 45%;
  width: 16%;
  height: 25%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1;
}

低版本浏览器兼容方案

如果需要兼容不支持aspect-ratio属性的旧浏览器,可以把#video-container的aspect-ratio: 16/9替换为padding实现方案:

#video-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  max-width: 100vw;
  /* padding-top百分比是相对于宽度的,9/16=56.25%,刚好对应16:9比例 */
  height: 0;
  padding-top: 56.25%;
  overflow: hidden;
}
/* 同时给video加绝对定位,保证视频占满容器 */
#video-obj {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

修改后不管窗口是过宽还是过窄,#video-container都会保持16:9居中显示,和视频的实际渲染区域完全重合,两个定位div不会再出现偏移、拉伸错位的问题。

内容的提问来源于stack exchange,提问作者Erlend K.H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:04