vue 实现全屏
Vue 实现全屏的方法
使用浏览器原生 API
现代浏览器提供了 requestFullscreen API 来实现全屏功能。在 Vue 中可以通过调用该 API 实现全屏。
// 进入全屏
function enterFullscreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// 退出全屏
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
封装为 Vue 指令
可以将全屏功能封装为 Vue 指令,方便在组件中使用。
// 注册全局指令
Vue.directive('fullscreen', {
bind(el, binding) {
el.addEventListener('click', () => {
if (binding.value) {
enterFullscreen(el);
} else {
exitFullscreen();
}
});
}
});
// 在模板中使用
<button v-fullscreen="true">进入全屏</button>
<button v-fullscreen="false">退出全屏</button>
使用第三方库
可以使用 screenfull 这样的第三方库简化全屏操作,该库提供了跨浏览器的全屏 API 封装。
安装 screenfull:
npm install screenfull
在 Vue 中使用:
import screenfull from 'screenfull';
export default {
methods: {
toggleFullscreen() {
if (screenfull.isEnabled) {
screenfull.toggle();
}
}
}
};
监听全屏状态变化
可以监听全屏状态的变化,以便在 UI 上做出相应调整。
mounted() {
document.addEventListener('fullscreenchange', this.handleFullscreenChange);
},
beforeDestroy() {
document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
},
methods: {
handleFullscreenChange() {
this.isFullscreen = !!document.fullscreenElement;
}
}
注意事项
- 全屏 API 必须在用户交互(如点击事件)中触发,否则会被浏览器阻止。
- 不同浏览器可能需要不同的前缀(如
webkit,ms)。 - 全屏状态可以通过
document.fullscreenElement检查。







