Vue使用ScreenFull插件实现全屏切换

官网链接

1. 安装

javascript 复制代码
pnpm add screenfull

2. 使用

javascript 复制代码
<template>
  <!-- 如果浏览器不支持全屏,则不显示这个图标 -->
  <div class="screen-full" @click="changeScreenFull()" v-if="isScreenEnable">
    <!-- 全屏和非全屏的图标 -->
    <SvgIcon
      :name="isScreenFull ? 'fullscreen-exit' : 'fullscreen'"
      color="#515151"
      width="30px"
      height="30px"
    ></SvgIcon>
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue'
import { ElMessage } from 'element-plus'
import screenfull from 'screenfull'
// 是否支持全屏
const isScreenEnable = ref(screenfull.isEnabled)
// 用于控制图片状态
const isScreenFull = ref(false)
// 切换全屏
const changeScreenFull = () => {
  // 检查全屏功能是否可用
  if (!isScreenEnable.value) {
    ElMessage.error('浏览器不支持全屏')
    return
  }
  // 根据当前全屏状态进行切换
  if (screenfull.isFullscreen) {
    screenfull.exit()
    isScreenFull.value = false
  } else {
    screenfull.toggle()
    isScreenFull.value = true
  }
}
// 监听全屏状态, 当全屏状态改变时, 会触发change事件
onMounted(() => {
  screenfull.on('change', () => {})
})
// 停止监听
onUnmounted(() => {
  screenfull.off('change', () => {})
})
</script>

3. 方法

  • 引入
javascript 复制代码
import screenfull from 'screenfull'
  • 是否可以全屏(属性)(浏览器的支持)
javascript 复制代码
// 返回值是boolean类型
screenfull.isEnabled
  • 开启全屏状态(方法)
javascript 复制代码
screenfull.toggle()
  • 退出全屏状态
javascript 复制代码
screenfull.exit()
  • 监听全屏状态发生改变时,可以执行回调
javascript 复制代码
screenfull.on('change', () => {})
  • 停止监听的回调
javascript 复制代码
screenfull.off('change', () => {})
相关推荐
Chrischaan19 分钟前
做 AI 塔罗小程序时,我为什么不让大模型自己抽牌:一次上线复盘
前端
骑着蜗牛撵大象3271 小时前
LangChain 工具调用从声明到闭环:给智能体接上真实的手脚
前端
数据掘金1 小时前
百度统计后台页面数据异常?从手动调用时机开始排查
前端
hunteritself1 小时前
10 层 4K 实时剪辑,国产工作站进入广电制作核心
大数据·前端·人工智能·深度学习·transformer
踩着两条虫1 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
默_笙1 小时前
🧀 让大模型的答案"流"出来:NestJS AI 模块 + SSE + RxJS 实战
javascript·人工智能
mbshqqb1 小时前
TypeScript基础教程之同步生成器
前端·javascript·typescript
嘟嘟同学和妮妮同学1 小时前
【升级】一个中国历史可视化站:皇帝时间线梳理、古代思想流派、诗词鉴赏 (2)
前端·html
暗夜行者之光2 小时前
LangGraph + MCP 实战:构建"自然语言查数据"的 ChatBI Agent
前端·后端
一tiao咸鱼2 小时前
还在手动海投?我做了个 AI 求职助手,自动筛选 BOSS 职位再精准投递
前端·后端·面试