JavaScript 实现原生视频播放器需隐藏默认控件,通过事件监听控制播放/暂停、进度拖拽、音量与全屏;核心是同步 video 元素状态与自定义 UI,处理 loadedmetadata、timeupdate、fullscreenchange 等事件,并优化悬停显示、自动隐藏及移动端兼容性。

用 JavaScript 实现一个基础但可扩展的视频播放器,核心是控制 <video></video> 元素的行为,并用自定义 DOM 元素替代默认控件。全屏、播放/暂停、进度拖拽、音量控制等都可以通过原生 API 和事件监听完成,无需第三方库。
先写一个干净的 HTML 结构,隐藏浏览器默认控件(controls="false"),只保留视频容器和后续要插入的自定义控件栏:
<div class="video-player">
<video id="myVideo" preload="metadata">
<source src="example.mp4" type="video/mp4">
</video>
<div class="custom-controls">
<button class="play-btn">▶</button>
<input type="range" class="progress-bar" min="0" max="100">
<span class="time-current">00:00</span> / <span class="time-duration">--:--</span>
<button class="fullscreen-btn">⤢</button>
</div>
</div>关键点:设置 preload="metadata" 让视频快速获取时长;所有交互逻辑由 JS 驱动,CSS 负责样式和布局。
监听按钮点击和视频自身事件,保持 UI 与状态一致:
立即学习“Java免费学习笔记(深入)”;
video.play() 或 video.pause(),同时切换按钮文字或图标timeupdate 事件,实时更新进度条 value 和当前时间显示video.currentTime = (e.target.value / 100) * video.duration 跳转loadedmetadata 后填充总时长(time-duration)不要只调 video.requestFullscreen() —— 它可能被父容器限制。正确做法是让整个 .video-player 进入全屏,并统一处理退出逻辑:
document.fullscreenElement 判断当前状态playerElement.requestFullscreen()(注意:不同浏览器前缀已基本淘汰,现代浏览器用标准方法即可)fullscreenchange 事件,在进入/退出时切换按钮图标、调整布局(如隐藏某些控件)、甚至重设视频宽高比document.exitFullscreen() 都会触发该事件,适合做清理工作几个容易忽略但影响体验的关键点:
.video-player 绑定 mousemove,延时隐藏控件(用 setTimeout + clearTimeout 防抖)video.muted 改变时也要更新滑块值和图标opacity: 0,hover 或点击再恢复基本上就这些。不复杂但容易忽略细节——比如忘记监听 loadedmetadata 就读不到时长,或者没处理 fullscreenchange 导致退出全屏后 UI 错乱。把 video API 当成普通 DOM 元素来操作,逻辑就清晰了。
以上就是如何用JavaScript实现一个视频播放器_如何自定义控件和处理全屏?的详细内容,更多请关注php中文网其它相关文章!
potplayer是一款功能全面的视频播放器,支持各种格式的音频文件,内置了非常强大的解码器功能,能够非常流畅的观看,有需要的小伙伴快来保存下载体验吧!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号