视频(Video)

网页嵌视频有两种来源:HTML5 的 <video> 播放本地或流媒体文件,<iframe> 内嵌 YouTube、B 站等第三方平台的视频。两者在窄屏下都可能撑破布局或变形,本节分别给出自适应方案。

<video> 标签自适应

给 video 元素设置最大宽度,它就能随容器等比缩放:

video { max-width: 100%; height: auto; }
<video controls width="640" height="360">
  <source src="movie.mp4" type="video/mp4">
  您的浏览器不支持 video 标签。
</video>

效果:容器变窄时视频等比缩小,页面不出现横向滚动条;height:auto 保证宽高比不变形。

iframe 内嵌视频的难点

平台分享出的 iframe 通常带固定宽高(如 560×315)。只设 max-width:100% 能缩宽度,高度却固定,视频会变形或留下黑边。经典做法是“父容器按比例撑高 + iframe 绝对定位填满”:

.video-container {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%; /* 16:9:高度 = 宽度 × 9/16 */
    height: 0;
    overflow: hidden;
}
.video-container iframe {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}
<div class="video-container">
  <iframe src="https://example.com/player/video/123"
          allowfullscreen></iframe>
</div>

效果:容器始终维持 16:9 比例,iframe 铺满其中,任何屏幕宽度下视频都不变形、不溢出。

aspect-ratio 现代写法

CSS 的 aspect-ratio 属性让上面的“padding 技巧”大幅简化:

.video-container {
    aspect-ratio: 16 / 9;  /* 直接声明宽高比 */
}
.video-container iframe {
    width: 100%; height: 100%;
}

父容器宽高比固定后,内部 iframe 用 100%×100% 填满即可。现代浏览器均已支持 aspect-ratio,新项目可以放心使用;老项目需要兼容旧浏览器时仍用 padding 技巧。

小结

视频自适应分两种情况:<video> 只需 max-width:100% 加 height:auto;iframe 则要借助 16:9 的固定比例容器(padding 技巧或 aspect-ratio)让视频随宽度等比缩放,从此告别小屏溢出与变形。

笔记加载中…