应根据视频来源选择标签:本地或托管视频用,平台嵌入(如youtube)必须用;横向滚动用flex布局并设flex: 0 0 320px和overflow-x: auto;切换视频需调用load()方法;移动端需扩大热区并确保用户手势触发播放。

视频列表用 <video></video> 还是 <iframe></iframe>?
直接用 <video></video> 标签加载本地或托管视频,可控性强、支持自定义控件和 JS 交互;嵌入平台(如 YouTube、Bilibili)必须用 <iframe></iframe>,否则会跨域或被拒绝加载。别硬套同一套逻辑——本地 MP4 就别塞 <iframe src="file:///..."></iframe>,浏览器直接拦截。
常见错误现象:net::ERR_FILE_NOT_FOUND 或播放器空白,八成是路径写错或 MIME 类型不匹配(比如 Nginx 没配 .mp4 类型)。
- 本地测试时,用 HTTP 服务起页面(
python3 -m http.server),别双击打开file:// -
<video></video>的src必须是相对路径(如./videos/1.mp4)或绝对 URL,不能是 Windows 绝对路径(C:\xxx\1.mp4) - 用
<iframe></iframe>时,确认平台允许嵌入(YouTube 需开启“嵌入”选项,Bilibili 链接要带?autoplay=0参数)
怎么让多个视频横向滚动而不是竖着堆满页面?
默认 <video></video> 是块级元素,垂直流式布局。想横排,核心是控制容器的 display 和子项的尺寸约束。
关键不是给 <video></video> 加 float 或 inline-block(易换行错位),而是用 Flex 布局:
<div class="playlist">
<video controls width="320" height="180" src="./v1.mp4"></video><video controls width="320" height="180" src="./v2.mp4"></video>
</div>
<p><style>
.playlist {
display: flex;
overflow-x: auto;
gap: 12px;
padding: 8px 0;
}
.playlist video {
flex: 0 0 320px; /<em> 不缩放、不拉伸、固定宽 /
border-radius: 4px;
}
</style></p>
-
flex: 0 0 320px比width: 320px更可靠——防止内容撑大或压缩 - 加
overflow-x: auto后,iOS Safari 需要额外加-webkit-overflow-scrolling: touch才顺滑 - 别忘了设
height或用aspect-ratio: 16/9(现代浏览器支持),否则不同视频宽高比会导致高度不齐
点击缩略图切换视频,但 src 改了却不重载?
<video></video> 元素修改 src 属性后,不会自动触发重新加载。必须手动调用 load() 方法,否则仍播旧资源或黑屏。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
典型错误写法:videoEl.src = 'new.mp4' → 播放器不动。
- 正确做法:
videoEl.src = 'new.mp4'; videoEl.load(); videoEl.play(); - 如果视频带音频,
play()可能因用户未交互被拒(Chrome 自动播放策略),可先静音:videoEl.muted = true - 缩略图建议用
<img>+data-src存目标视频地址,避免提前加载所有视频资源
移动端点不到播放按钮?触摸区域太小
默认 <video></video> 控制栏在移动端非常窄,尤其 iOS 上,手指一划就拖动页面而非点控件。必须扩大点击热区。
不能只靠 CSS 放大控件(可能破坏原生 UI),稳妥方式是包裹一层可点击容器,并监听 click 后手动触发 play() 或 pause():
<div class="video-wrapper"> <video id="main-video" controls></video><button class="play-btn" aria-label="播放"></button> </div>
-
.video-wrapper { position: relative; },.play-btn绝对定位盖住右下角,尺寸设为60px × 60px - 按钮点击后:
videoEl.paused ? videoEl.play() : videoEl.pause() - 真机测试时注意:Safari 对
play()的调用上下文敏感,必须由用户手势触发(onclick可,setTimeout不可)
实际做播放列表时,最常被忽略的是资源加载时机和移动端交互反馈——视频文件没加载完就点播放,界面没响应,用户以为坏了。加个 waiting 状态提示(比如 loading spinner)比强行自动播放更可靠。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










