vue实现全屏显示
Vue 实现全屏显示的方法
在 Vue 项目中实现全屏功能可以通过浏览器的 Fullscreen API 完成。以下是具体实现方式:
使用原生 Fullscreen API
检查浏览器是否支持全屏功能,并通过调用 requestFullscreen 方法实现全屏:
// 进入全屏
function enterFullscreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) { // Safari
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) { // IE11
element.msRequestFullscreen();
}
}
// 退出全屏
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) { // Safari
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) { // IE11
document.msExitFullscreen();
}
}
在 Vue 组件中使用
在 Vue 组件中封装全屏逻辑,例如通过按钮触发:
<template>
<div ref="fullscreenElement">
<button @click="toggleFullscreen">切换全屏</button>
</div>
</template>
<script>
export default {
methods: {
toggleFullscreen() {
if (!document.fullscreenElement) {
this.$refs.fullscreenElement.requestFullscreen();
} else {
document.exitFullscreen();
}
}
}
};
</script>
监听全屏状态变化
通过 fullscreenchange 事件监听全屏状态的变化:
mounted() {
document.addEventListener('fullscreenchange', this.handleFullscreenChange);
},
beforeDestroy() {
document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
},
methods: {
handleFullscreenChange() {
this.isFullscreen = !!document.fullscreenElement;
}
}
使用第三方库简化实现
如果需要更简单的实现方式,可以使用第三方库如 screenfull:
安装依赖:
npm install screenfull
在 Vue 组件中使用:
import screenfull from 'screenfull';
export default {
methods: {
toggleFullscreen() {
if (screenfull.isEnabled) {
screenfull.toggle(this.$refs.fullscreenElement);
}
}
}
};
注意事项
- 全屏 API 需要在用户交互(如点击事件)中触发,不能自动调用。
- 不同浏览器可能需要前缀(如
webkit、ms)。 - 全屏模式下部分 CSS 样式可能需要调整以确保内容正常显示。
以上方法可以灵活应用于 Vue 2 或 Vue 3 项目,根据实际需求选择原生 API 或第三方库实现。







