当前位置:首页 > 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 可判断当前是否处于全屏状态,并监听变化:

前端vue实现全屏

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

退出全屏

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

前端vue实现全屏

// 退出全屏
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;
}

第三方库推荐

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

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

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

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

相关文章

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…

vue底部实现

vue底部实现

Vue 底部实现方法 在 Vue 项目中实现底部布局可以通过多种方式完成,以下是一些常见的方法: 使用固定定位 将底部元素固定在页面底部,适用于单页应用或需要始终显示的底部栏。 <temp…

vue实现爬虫

vue实现爬虫

Vue 实现爬虫的基本思路 Vue.js 本身是一个前端框架,主要用于构建用户界面。要实现爬虫功能,通常需要结合后端技术或浏览器自动化工具。以下是几种常见的方法: 方法一:Vue + Node.js…

vue app 实现

vue app 实现

Vue App 实现步骤 创建Vue项目 使用Vue CLI或Vite初始化项目。Vue CLI适合传统项目,Vite适合现代轻量级应用。 npm create vue@latest my-vu…

vue实现联动

vue实现联动

Vue 实现联动效果 联动效果通常指多个组件或表单元素之间相互影响,例如选择省份后动态加载城市列表。Vue 提供了多种方式实现联动,包括数据绑定、计算属性、侦听器等。 数据驱动联动 通过 Vue 的…