npm i screenfull

// 封装组件

components/Screenfull/index.js

<template>
  <div>
    <!--    <svg-icon :icon-class="isFullscreen?'exit-fullscreen':'fullscreen'" @click="click" />-->
    <img
      v-show="isFullscreen"
      class="fullscreenBox"
      width="24px"
      height="24px"
      src="/img/fullscreen.png"
      @click="click"
    />
    <img
      v-show="!isFullscreen"
      class="fullscreenBox"
      width="24px"
      height="24px"
      src="/img/exit-fullscreen.png"
      @click="click"
    />
  </div>
</template>

<script>
import screenfull from "screenfull";

export default {
  name: "Screenfull",
  data() {
    return {
      isFullscreen: false,
    };
  },
  mounted() {
    this.init();
  },
  beforeDestroy() {
    this.destroy();
  },
  methods: {
    click() {
      if (!screenfull.isEnabled) {
        this.$message({ message: "你的浏览器不支持全屏", type: "warning" });
        return false;
      }
      screenfull.toggle();
    },
    change() {
      this.isFullscreen = screenfull.isFullscreen;
    },
    init() {
      if (screenfull.isEnabled) {
        screenfull.on("change", this.change);
      }
    },
    destroy() {
      if (screenfull.isEnabled) {
        screenfull.off("change", this.change);
      }
    },
  },
};
</script>

<style scoped>
.screenfull-svg {
  display: inline-block;
  cursor: pointer;
  fill: #5a5e66;
  width: 20px;
  height: 20px;
  vertical-align: 10px;
}
.fullscreenBox {
}
</style>

// 使用

<div class="right-menu-item hover-effect">
        <screenfull id="screenfull" />
</div>

import Screenfull from "@/components/Screenfull";

  components: {
    Screenfull,
  },

转自:
https://blog.csdn.net/m0_74149462/article/details/130639201