当前位置:首页 > VUE

前端vue实现全屏

2026-03-09 16:12:48VUE

全屏 API 基本使用

现代浏览器提供了全屏 API,可通过 Element.requestFullscreen() 方法实现指定元素的全屏展示。在 Vue 中,可以通过以下方式调用:

// 触发全屏
const enterFullscreen = () => {
  const element = document.documentElement; // 整个页面
  if (element.requestFullscreen) {
    element.requestFullscreen();
  } else if (element.webkitRequestFullscreen) { // Safari 兼容
    element.webkitRequestFullscreen();
  } else if (element.msRequestFullscreen) { // IE11 兼容
    element.msRequestFullscreen();
  }
};

监听全屏状态变化

通过 document.fullscreenElement 可判断当前是否处于全屏状态,并监听变化:

// 监听全屏变化
document.addEventListener('fullscreenchange', () => {
  if (document.fullscreenElement) {
    console.log('已进入全屏');
  } else {
    console.log('已退出全屏');
  }
});

退出全屏

调用 document.exitFullscreen() 可退出全屏:

// 退出全屏
const exitFullscreen = () => {
  if (document.exitFullscreen) {
    document.exitFullscreen();
  } else if (document.webkitExitFullscreen) { // Safari 兼容
    document.webkitExitFullscreen();
  } else if (document.msExitFullscreen) { // IE11 兼容
    document.msExitFullscreen();
  }
};

Vue 组件封装示例

将全屏逻辑封装为可复用的 Vue 组件或指令:

<template>
  <button @click="toggleFullscreen">
    {{ isFullscreen ? '退出全屏' : '进入全屏' }}
  </button>
</template>

<script>
export default {
  data() {
    return {
      isFullscreen: false,
    };
  },
  methods: {
    toggleFullscreen() {
      if (!document.fullscreenElement) {
        this.enterFullscreen();
      } else {
        this.exitFullscreen();
      }
    },
    enterFullscreen() {
      const element = document.documentElement;
      const requestFS = 
        element.requestFullscreen ||
        element.webkitRequestFullscreen ||
        element.msRequestFullscreen;
      requestFS.call(element).then(() => {
        this.isFullscreen = true;
      });
    },
    exitFullscreen() {
      const exitFS = 
        document.exitFullscreen ||
        document.webkitExitFullscreen ||
        document.msExitFullscreen;
      exitFS.call(document).then(() => {
        this.isFullscreen = false;
      });
    },
  },
  mounted() {
    document.addEventListener('fullscreenchange', () => {
      this.isFullscreen = !!document.fullscreenElement;
    });
  },
};
</script>

兼容性注意事项

  1. 前缀处理:不同浏览器可能需要添加前缀(如 webkitms)。
  2. 用户交互限制:全屏 API 通常需要在用户点击事件(如按钮)中触发,无法通过异步代码直接调用。
  3. 样式调整:全屏模式下可通过 CSS 伪类 :fullscreen 调整元素样式。
:fullscreen {
  background-color: #fff;
}

第三方库推荐

若需简化实现,可使用以下库:

前端vue实现全屏

  • screenfull.js:封装了跨浏览器全屏 API,支持链式调用。
    import screenfull from 'screenfull';
    screenfull.toggle(); // 切换全屏

通过以上方法,可灵活实现 Vue 中的全屏功能并处理兼容性问题。

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

相关文章

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signature_p…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…

proxy实现vue

proxy实现vue

使用 Proxy 实现 Vue 响应式系统 Vue 3 的响应式系统基于 JavaScript 的 Proxy API,通过代理对象实现对属性的拦截和依赖追踪。以下是实现的核心逻辑: 创建响应式对象…

vue实现转页面

vue实现转页面

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式完成,具体取决于项目结构和需求。 使用 router-link 组件 router-link 是 Vue Router…

vue实现添加div

vue实现添加div

在 Vue 中动态添加 div 元素 使用 v-for 指令动态渲染 div 通过 v-for 可以基于数组数据动态生成多个 div 元素。在模板中绑定数组数据,Vue 会自动遍历数组并为每个元素创建…

vue缺省页实现

vue缺省页实现

Vue 缺省页实现方法 使用条件渲染控制显示 通过v-if或v-show指令控制缺省页的显示。当数据为空时展示缺省组件,否则显示正常内容。 <template> <div>…