在网页开发中,我们经常会用到<video>标签来嵌入视频内容,默认的播放控件包含进度条、播放暂停按钮、音量调节等元素,但有些场景下我们需要隐藏这些默认控件,尤其是进度条,来实现自定义的播放交互或者固定的视频展示效果。下面给大家介绍几种实用的实现方法。

方法一:直接移除controls属性
如果不需要任何默认播放控件,最直接的方式就是不添加<video>标签的controls属性,这样浏览器就不会渲染默认的控件栏,自然也不会有进度条。
<!-- 不添加controls属性,无默认控件 --> <video src="test.mp4" width="800" height="450" autoplay muted loop> 您的浏览器不支持video标签 </video>
这种方式适合完全不需要用户操作播放的场景,比如自动循环的背景视频,但是用户无法手动控制播放暂停,也无法拖动进度。
方法二:通过CSS隐藏进度条
如果还需要保留部分默认控件,只是想隐藏进度条,可以通过CSS选择器定位到进度条元素进行隐藏。不同浏览器的默认控件样式类名不同,需要分别适配。
/* 隐藏webkit内核浏览器(Chrome、Safari等)的进度条 */
video::-webkit-media-controls-timeline {
display: none;
}
/* 隐藏Firefox浏览器的进度条 */
video::-moz-range-track {
display: none;
}
/* 隐藏IE/Edge的进度条 */
video::-ms-track {
display: none;
}这种方式可以保留播放暂停、音量等其他控件,只隐藏进度条,但是不同浏览器的兼容性需要额外处理,部分旧版本浏览器可能不支持对应的伪元素选择器。
方法三:JavaScript动态控制控件显示
如果需要根据业务逻辑动态切换控件和进度条的显示状态,可以通过JavaScript操作<video>元素的controls属性,或者通过DOM操作隐藏控件元素。
// 获取video元素
const videoEle = document.querySelector('video');
// 隐藏所有默认控件(包括进度条)
videoEle.removeAttribute('controls');
// 如果需要动态显示控件,可以添加controls属性
// videoEle.setAttribute('controls', 'controls');
// 也可以通过控制自定义类来配合CSS隐藏进度条
videoEle.classList.add('hide-progress');对应的CSS可以提前写好隐藏进度条的样式,通过添加类名来触发隐藏效果,这种方式灵活性更高,适合有动态交互需求的场景。
不同方法对比
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 移除controls属性 | 完全不需要用户操作播放的场景 | 实现简单,无兼容问题 | 无法保留任何默认控件 |
| CSS隐藏进度条 | 需要保留部分默认控件的场景 | 可保留其他控件功能 | 需要适配不同浏览器内核 |
| JavaScript动态控制 | 需要动态切换控件状态的场景 | 灵活性高,可结合业务逻辑 | 需要额外写JS逻辑 |
需要注意的是,如果隐藏了进度条,最好给用户提供对应的自定义控制方式,避免用户无法操作视频内容,影响使用体验。如果是做自定义播放器,建议完全隐藏默认控件,自己实现全套的交互逻辑,兼容性会更好。
html_videocontrolsprogress_barJavaScript修改时间:2026-05-29 21:31:23