当前位置:首页 > 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。

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

注意事项

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

vue 实现全屏

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

相关文章

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 sl…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽…

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。…

vue实现pie

vue实现pie

Vue 实现饼图 在 Vue 中实现饼图通常可以通过第三方图表库(如 ECharts、Chart.js 或 Highcharts)来完成。以下是使用 ECharts 和 Chart.js 的两种常见方…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…