当前位置:首页 > 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实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…

vue 实现分屏

vue 实现分屏

Vue 实现分屏的方法 使用 CSS Flexbox 或 Grid 布局 通过 CSS Flexbox 或 Grid 布局可以轻松实现分屏效果。在 Vue 组件中定义两个或多个区域,并使用 CSS 控…

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 DO…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue 实现长按

vue 实现长按

实现长按功能的基本思路 在Vue中实现长按功能,通常需要监听元素的mousedown或touchstart事件,启动一个计时器。当用户按住元素超过设定的时间阈值时,触发长按回调函数。如果在时间阈值内触…