vue实现全屏
Vue 实现全屏功能
在 Vue 项目中实现全屏功能可以通过浏览器提供的 Fullscreen API 来完成。以下是几种常见的实现方式:
使用原生 Fullscreen API
通过调用 document.documentElement.requestFullscreen() 方法进入全屏,document.exitFullscreen() 退出全屏:
// 进入全屏
function enterFullscreen() {
const element = document.documentElement;
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 封装全屏组件
可以封装一个可复用的全屏组件,方便在项目中多次调用:
<template>
<button @click="toggleFullscreen">
{{ isFullscreen ? '退出全屏' : '进入全屏' }}
</button>
</template>
<script>
export default {
data() {
return {
isFullscreen: false
};
},
methods: {
toggleFullscreen() {
if (!this.isFullscreen) {
this.enterFullscreen();
} else {
this.exitFullscreen();
}
},
enterFullscreen() {
const element = document.documentElement;
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
this.isFullscreen = true;
},
exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
this.isFullscreen = false;
}
}
};
</script>
使用第三方库
如果不想手动处理浏览器兼容性问题,可以使用第三方库如 screenfull:
安装依赖:
npm install screenfull
在 Vue 组件中使用:
<template>
<button @click="toggleFullscreen">
{{ isFullscreen ? '退出全屏' : '进入全屏' }}
</button>
</template>
<script>
import screenfull from 'screenfull';
export default {
data() {
return {
isFullscreen: false
};
},
methods: {
toggleFullscreen() {
if (screenfull.isEnabled) {
screenfull.toggle();
this.isFullscreen = !this.isFullscreen;
}
}
}
};
</script>
监听全屏状态变化
可以通过事件监听全屏状态的变化:

mounted() {
document.addEventListener('fullscreenchange', this.handleFullscreenChange);
document.addEventListener('webkitfullscreenchange', this.handleFullscreenChange);
document.addEventListener('msfullscreenchange', this.handleFullscreenChange);
},
beforeDestroy() {
document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
document.removeEventListener('webkitfullscreenchange', this.handleFullscreenChange);
document.removeEventListener('msfullscreenchange', this.handleFullscreenChange);
},
methods: {
handleFullscreenChange() {
this.isFullscreen = !!(
document.fullscreenElement ||
document.webkitFullscreenElement ||
document.msFullscreenElement
);
}
}
以上方法可以根据项目需求选择适合的方式实现全屏功能。






