uniapp video 全屏如何实现
在uniapp中,如何实现video组件的全屏播放功能?我尝试了默认的controls属性,但无法自定义全屏按钮的样式和行为。另外,在安卓和iOS平台上,全屏表现似乎不一致,有什么方法可以统一全屏效果吗?如果需要自定义全屏逻辑,应该怎么处理?
2 回复
在uniapp中,video组件全屏可通过设置fullscreen属性或调用videoContext.requestFullScreen()方法实现。
在 UniApp 中,实现视频全屏可以通过以下步骤完成:
1. 使用 video 组件
在页面中添加 video 组件,并设置相关属性:
<video
id="myVideo"
src="视频地址"
controls
@fullscreenchange="onFullscreenChange"
></video>
2. 通过按钮触发全屏
添加一个按钮,调用全屏方法:
<button @click="requestFullScreen">全屏播放</button>
3. 实现全屏方法
在 methods 中定义全屏函数:
methods: {
requestFullScreen() {
const videoContext = uni.createVideoContext('myVideo'); // 传入 video 的 id
videoContext.requestFullScreen(); // 进入全屏
},
onFullscreenChange(e) {
console.log('全屏状态变化:', e.detail.fullScreen);
// 可以在这里处理全屏状态变化逻辑
}
}
4. 退出全屏
退出全屏可以通过以下方式:
- 自动检测用户操作(如按 ESC 键或设备返回键)
- 程序控制退出:
videoContext.exitFullScreen();
注意事项:
- 确保
video组件设置了id属性 - 全屏功能在部分安卓设备上可能需要用户手势触发
- 全屏状态变化可以通过
@fullscreenchange事件监听 - H5 端全屏效果取决于浏览器支持情况
完整示例:
<template>
<view>
<video
id="mainVideo"
src="https://example.com/sample.mp4"
controls
@fullscreenchange="onFullscreenChange"
></video>
<button @click="toggleFullScreen">切换全屏</button>
</view>
</template>
<script>
export default {
methods: {
toggleFullScreen() {
const videoContext = uni.createVideoContext('mainVideo');
videoContext.requestFullScreen();
},
onFullscreenChange(e) {
if (!e.detail.fullScreen) {
// 退出全屏时的处理
console.log('已退出全屏');
}
}
}
}
</script>
这样就可以在 UniApp 中实现视频的全屏播放功能了。

