当前位置:首页 > VUE

vue实现页面全屏

2026-02-18 18:20:48VUE

Vue 实现页面全屏的方法

使用浏览器原生 Fullscreen API

浏览器提供了 Fullscreen API 来实现全屏功能,可以在 Vue 中直接调用这些方法。

// 进入全屏
function enterFullscreen(element) {
  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();
  }
}

// 检查是否全屏
function isFullscreen() {
  return !!(
    document.fullscreenElement ||
    document.webkitFullscreenElement ||
    document.msFullscreenElement
  );
}

在 Vue 组件中使用

在 Vue 组件中,可以将这些方法封装为组件的方法或全局方法。

vue实现页面全屏

<template>
  <div ref="fullscreenElement">
    <button @click="toggleFullscreen">Toggle Fullscreen</button>
  </div>
</template>

<script>
export default {
  methods: {
    toggleFullscreen() {
      if (this.isFullscreen()) {
        this.exitFullscreen();
      } else {
        this.enterFullscreen(this.$refs.fullscreenElement);
      }
    },
    enterFullscreen(element) {
      if (element.requestFullscreen) {
        element.requestFullscreen();
      } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullscreen();
      } else if (element.msRequestFullscreen) {
        element.msRequestFullscreen();
      }
    },
    exitFullscreen() {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      } else if (document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
      } else if (document.msExitFullscreen) {
        document.msExitFullscreen();
      }
    },
    isFullscreen() {
      return !!(
        document.fullscreenElement ||
        document.webkitFullscreenElement ||
        document.msFullscreenElement
      );
    },
  },
};
</script>

使用第三方库

如果需要更简单的实现,可以使用第三方库如 screenfull

安装 screenfull

vue实现页面全屏

npm install screenfull

在 Vue 组件中使用:

<template>
  <div>
    <button @click="toggleFullscreen">Toggle Fullscreen</button>
  </div>
</template>

<script>
import screenfull from 'screenfull';

export default {
  methods: {
    toggleFullscreen() {
      if (screenfull.isEnabled) {
        screenfull.toggle();
      }
    },
  },
};
</script>

监听全屏状态变化

可以通过监听 fullscreenchange 事件来响应全屏状态的变化。

<template>
  <div ref="fullscreenElement">
    <button @click="toggleFullscreen">Toggle Fullscreen</button>
    <p>Fullscreen: {{ isFullscreen }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFullscreen: false,
    };
  },
  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: {
    toggleFullscreen() {
      if (this.isFullscreen) {
        this.exitFullscreen();
      } else {
        this.enterFullscreen(this.$refs.fullscreenElement);
      }
    },
    enterFullscreen(element) {
      if (element.requestFullscreen) {
        element.requestFullscreen();
      } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullscreen();
      } else if (element.msRequestFullscreen) {
        element.msRequestFullscreen();
      }
    },
    exitFullscreen() {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      } else if (document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
      } else if (document.msExitFullscreen) {
        document.msExitFullscreen();
      }
    },
    handleFullscreenChange() {
      this.isFullscreen = !!(
        document.fullscreenElement ||
        document.webkitFullscreenElement ||
        document.msFullscreenElement
      );
    },
  },
};
</script>

注意事项

  • 全屏 API 需要用户交互(如点击事件)才能触发,不能自动调用。
  • 不同浏览器可能需要不同的前缀(如 webkit, ms)。
  • 某些浏览器可能不支持全屏 API,使用前需要检查兼容性。

标签: 全屏页面
分享给朋友:

相关文章

vue实现页面签字

vue实现页面签字

实现页面签名的Vue方案 在Vue中实现页面签名功能,可以通过HTML5的Canvas元素结合手势或鼠标事件来捕获用户绘制轨迹。以下是具体实现方法: 安装签名库(可选) 使用现成的Vue签名…

react如何页面跳转

react如何页面跳转

React 页面跳转方法 在 React 中实现页面跳转有多种方式,具体取决于项目使用的路由库(如 React Router)或状态管理工具。以下是常见的几种方法: 使用 React Router…

H5页面全景怎么实现

H5页面全景怎么实现

H5页面全景实现方法 H5页面全景效果可以通过多种技术实现,以下是几种常见的方法: 使用Three.js库 Three.js是一个基于WebGL的JavaScript库,适合创建复杂的3D全景效果。…

vue页面布局实现

vue页面布局实现

Vue 页面布局实现方法 基础布局结构 使用 Vue 单文件组件(SFC)构建页面框架,结合 <template>、<script> 和 <style> 三个部分。…

vue实现音乐页面

vue实现音乐页面

使用 Vue 实现音乐页面 项目初始化 使用 Vue CLI 或 Vite 创建一个新的 Vue 项目。确保安装了必要的依赖,如 vue-router 和 axios。 npm create vue…

vue登录页面实现

vue登录页面实现

实现Vue登录页面的基本步骤 创建Login.vue文件作为登录组件,包含表单元素(用户名/密码输入框、提交按钮)。使用v-model双向绑定数据,通过@submit.prevent阻止默认表单提交行…