当前位置:首页 > VUE

vue 实现全屏

2026-02-10 06:41:20VUE

Vue 实现全屏功能的方法

使用浏览器原生全屏 API

Vue 中可以通过调用浏览器原生全屏 API 实现全屏功能。现代浏览器支持 Element.requestFullscreen() 方法,结合 Vue 的生命周期或事件触发即可实现。

// 在 Vue 组件中实现全屏
export default {
  methods: {
    enterFullscreen() {
      const element = document.documentElement; // 整个页面
      if (element.requestFullscreen) {
        element.requestFullscreen();
      } else if (element.webkitRequestFullscreen) { // Safari
        element.webkitRequestFullscreen();
      } else if (element.msRequestFullscreen) { // IE11
        element.msRequestFullscreen();
      }
    },
    exitFullscreen() {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      } else if (document.webkitExitFullscreen) { // Safari
        document.webkitExitFullscreen();
      } else if (document.msExitFullscreen) { // IE11
        document.msExitFullscreen();
      }
    },
    toggleFullscreen() {
      if (!document.fullscreenElement) {
        this.enterFullscreen();
      } else {
        this.exitFullscreen();
      }
    }
  }
}

使用第三方库简化操作

如果希望简化代码或兼容更多浏览器,可以使用第三方库如 screenfull。安装后直接调用其方法即可。

npm install screenfull
import screenfull from 'screenfull';

export default {
  methods: {
    toggleFullscreen() {
      if (screenfull.isEnabled) {
        screenfull.toggle();
      }
    }
  }
}

监听全屏状态变化

全屏状态变化时可能需要更新 UI(如按钮图标),可以通过监听 fullscreenchange 事件实现。

export default {
  data() {
    return {
      isFullscreen: false
    };
  },
  mounted() {
    document.addEventListener('fullscreenchange', this.handleFullscreenChange);
    document.addEventListener('webkitfullscreenchange', this.handleFullscreenChange); // Safari
    document.addEventListener('msfullscreenchange', this.handleFullscreenChange); // IE
  },
  beforeDestroy() {
    document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
    document.removeEventListener('webkitfullscreenchange', this.handleFullscreenChange);
    document.removeEventListener('msfullscreenchange', this.handleFullscreenChange);
  },
  methods: {
    handleFullscreenChange() {
      this.isFullscreen = !!document.fullscreenElement;
    }
  }
}

针对特定元素全屏

默认全屏是针对整个页面,如果需要对特定元素(如视频或图表)全屏,只需将目标元素传入 API。

vue 实现全屏

export default {
  methods: {
    fullscreenElement() {
      const element = this.$refs.targetElement; // 通过 ref 获取 DOM
      if (element.requestFullscreen) {
        element.requestFullscreen();
      }
    }
  }
}

注意事项

  • 浏览器兼容性:不同浏览器可能需要前缀(如 webkitms)。
  • 用户交互限制:部分浏览器要求全屏操作必须由用户手势(如点击事件)触发,不能直接通过代码调用。
  • 样式调整:全屏模式下可能需要额外 CSS 调整布局(如 :fullscreen 伪类)。

标签: 全屏vue
分享给朋友:

相关文章

vue实现添加用户

vue实现添加用户

Vue 实现添加用户功能 数据绑定与表单设计 在 Vue 中实现添加用户功能,首先需要设计一个表单,用于收集用户输入的数据。通过 v-model 实现双向数据绑定,确保表单数据与 Vue 实例中的数据…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…

vue计算属性 实现

vue计算属性 实现

Vue 计算属性的实现 计算属性(Computed Properties)是 Vue 中的一个核心功能,用于声明式地定义依赖其他属性的值。计算属性会缓存结果,只有当依赖的响应式数据发生变化时才会重新计…

vue实现项目依赖

vue实现项目依赖

Vue 项目依赖的实现方法 使用 npm 或 yarn 安装依赖 通过 npm 或 yarn 安装项目所需的依赖包。在项目根目录下运行以下命令安装 Vue 及相关库: npm install vue…