当前位置:首页 > VUE

vue实现全屏事件

2026-03-08 15:31:16VUE

Vue 实现全屏事件的方法

监听全屏状态变化

使用 document 对象的 fullscreenchange 事件监听全屏状态变化。在 Vue 的 mounted 钩子中添加事件监听,并在 beforeDestroy 钩子中移除。

mounted() {
  document.addEventListener('fullscreenchange', this.handleFullscreenChange);
},
beforeDestroy() {
  document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
},
methods: {
  handleFullscreenChange() {
    if (document.fullscreenElement) {
      console.log('进入全屏');
    } else {
      console.log('退出全屏');
    }
  }
}

进入全屏模式

调用元素的 requestFullscreen 方法实现全屏。推荐指定具体元素(如 this.$refs.container)而非整个文档。

vue实现全屏事件

methods: {
  enterFullscreen() {
    const element = this.$refs.container;
    if (element.requestFullscreen) {
      element.requestFullscreen();
    } else if (element.webkitRequestFullscreen) { /* Safari */
      element.webkitRequestFullscreen();
    } else if (element.msRequestFullscreen) { /* IE11 */
      element.msRequestFullscreen();
    }
  }
}

退出全屏模式

通过 document.exitFullscreen 方法退出全屏,需处理不同浏览器的兼容性。

methods: {
  exitFullscreen() {
    if (document.exitFullscreen) {
      document.exitFullscreen();
    } else if (document.webkitExitFullscreen) { /* Safari */
      document.webkitExitFullscreen();
    } else if (document.msExitFullscreen) { /* IE11 */
      document.msExitFullscreen();
    }
  }
}

检测当前全屏状态

通过 document.fullscreenElement 判断是否有元素处于全屏状态,返回 null 表示未全屏。

vue实现全屏事件

methods: {
  checkFullscreen() {
    return !!(
      document.fullscreenElement ||
      document.webkitFullscreenElement ||
      document.msFullscreenElement
    );
  }
}

使用第三方库简化操作

安装 screenfull 库可简化跨浏览器全屏操作:

npm install screenfull

示例代码:

import screenfull from 'screenfull';

methods: {
  toggleFullscreen() {
    if (screenfull.isEnabled) {
      screenfull.toggle(this.$refs.container);
    }
  }
}

注意事项

  • 全屏 API 必须在用户交互(如点击事件)中触发,无法通过异步代码自动调用。
  • 移动端浏览器对全屏的支持有限,需测试目标平台兼容性。
  • CSS 伪类 :fullscreen 可针对全屏状态设置样式。

以上方法覆盖了全屏功能的核心实现,可根据实际需求选择原生 API 或第三方库方案。

标签: 全屏事件
分享给朋友:

相关文章

vue实现全选事件

vue实现全选事件

Vue 实现全选事件 在 Vue 中实现全选功能通常涉及以下关键步骤: 数据绑定与状态管理 使用 v-model 绑定复选框的状态,确保数据与视图同步。通常需要一个数组存储选中项和一个布尔值控制全选…

vue实现事件委托

vue实现事件委托

事件委托的概念 事件委托是一种利用事件冒泡机制的技术,将子元素的事件监听绑定到父元素上,通过事件目标(event.target)判断实际触发事件的子元素,从而减少事件监听器的数量,提升性能。 Vue…

vue实现点击左键事件

vue实现点击左键事件

在Vue中实现点击左键事件 Vue提供了@click指令来监听鼠标左键点击事件,这是最常见的实现方式。以下是在Vue中实现点击左键事件的方法: 模板中使用@click指令 <button @…

vue实现全屏遮罩屏

vue实现全屏遮罩屏

实现全屏遮罩屏的方法 在Vue中实现全屏遮罩屏可以通过CSS和Vue组件结合完成。遮罩屏通常用于模态框、加载动画或阻止用户与页面交互的场景。 基础CSS样式 创建一个覆盖全屏的固定定位元素,设置较高…

vue如何实现事件委托

vue如何实现事件委托

Vue 中实现事件委托的方法 事件委托是一种利用事件冒泡机制将子元素的事件处理委托给父元素的优化技术。Vue 中可以通过以下几种方式实现: 使用 v-on 和事件修饰符 通过 v-on 指令在父元素…

react如何触发resize事件

react如何触发resize事件

监听窗口 resize 事件 在 React 中监听窗口的 resize 事件,可以通过 useEffect 钩子实现。在组件挂载时添加事件监听器,并在卸载时移除。 import React, {…