Skip to content

API

全屏API

可以通过浏览器的 Fullscreen API 将任意 DOM 元素或页面全屏化

ts
<template>
  <div>
    <el-button type="primary" @click="toggleFullscreen">
      {{ isFullscreen ? '退出全屏' : '全屏显示' }}
    </el-button>
    <div ref="fullscreenContent" class="fullscreen-content">
      <el-card>
        <h2>这里是全屏内容</h2>
        <p>你可以将这个区域全屏显示。</p>
      </el-card>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const fullscreenContent = ref(null); // 引用需要全屏的 DOM 元素
    const isFullscreen = ref(false); // 是否全屏的状态

    const toggleFullscreen = () => {
      const elem = fullscreenContent.value;
      if (!isFullscreen.value) {
        // 进入全屏
        if (elem.requestFullscreen) {
          elem.requestFullscreen();
        } else if (elem.webkitRequestFullscreen) {
          elem.webkitRequestFullscreen();
        } else if (elem.mozRequestFullScreen) {
          elem.mozRequestFullScreen();
        } else if (elem.msRequestFullscreen) {
          elem.msRequestFullscreen();
        }
      } else {
        // 退出全屏
        if (document.exitFullscreen) {
          document.exitFullscreen();
        } else if (document.webkitExitFullscreen) {
          document.webkitExitFullscreen();
        } else if (document.mozCancelFullScreen) {
          document.mozCancelFullScreen();
        } else if (document.msExitFullscreen) {
          document.msExitFullscreen();
        }
      }
      isFullscreen.value = !isFullscreen.value; // 切换状态
    };

    return {
      fullscreenContent,
      isFullscreen,
      toggleFullscreen,
    };
  },
};
</script>

<style>
.fullscreen-content {
  border: 1px solid #ebeef5;
  padding: 20px;
  margin-top: 20px;
}
</style>