vue3全屏与退出全屏动态切换

需求:设置个按钮,点击后全屏展示,再次点击后退出全屏,就这样

1.找俩个图标,做全屏切换的点击切换样式

这边就不演示了,随便找什么样式的都行

2.使用插件

pinia+screenfull

npm install screenfull pinia -S

3.pinia导入

1.src目录下创建个store文件夹,并创建full.ts文件夹

在main.js中导入pinia

import { createPinia } from 'pinia'

app.use(createPinia())

full.ts文件内容,导入screefull全屏插件

//从pinia导入defineStore
import { defineStore } from "pinia";
import screenfull from "screenfull";
//使用defineStore对象创建一个状态管理,且进行默认导出
export default defineStore({
  //id: 只是一个标识,值必须是所有store中的唯一值,此id可以是defineStore的第一个实际参数
  id: "标识",
  //state方法,且方法返回一个对象,对象中时需要管理的状态信息
  state() {
    return {
      active: false,
      //属性:值,  //共享的状态
    };
  },
  //getters:与vuex中getters的使用方式一致,都是实现计算的方法
  getters: {
    计算方法名() {
      //使用this.state中的属性名  即可直接访问state中的数据
      return "值"; //此值为最终在组件中显示的值
    },
  },
  //actions:与vuex中的actions一致,都是用于存放异步修改state的方法的
  actions: {
    // 全屏和退出全屏切换
    toggle() {
      if (screenfull.isFullscreen) {
        screenfull.exit();
      } else {
        screenfull.request();
      }
      this.active = !this.active;
      console.log(this.active);
      //可以使用this.state中的属性名  直接访问state中的数据
    },
  },
});

4.做切换的vue文件

这边的我用的是阿里巴巴矢量图标,可以根据自己喜好换成别的都可以

<template>
  <el-tooltip
    effect="dark"
    :content="active ? '退出全屏' : '全屏'"
    placement="bottom"
  >
    <div @click="toggle()">
      <i class="iconfont icon-quxiaoquanping_o" v-if="active"></i>
      <i class="iconfont icon-quanping_o" v-else></i>
    </div>
    <el-icon v-if="active"><FullScreen /></el-icon>
  </el-tooltip>
</template>

<script setup lang="ts">
import PiniaActive from "@/store/modules/homeStore";
import { computed } from "vue";
const store = PiniaActive();
let { toggle } = store;
// 和pinia的值做双向绑定响应
const active = computed(() => store.active);
</script>
<style lang="scss" scoped>
.iconfont {
  font-size: 20px;
}
</style>

效果:

 文章到此结束,希望对你有所帮助~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Vue 中时刻监控页面的 `ESC` 键,以便在全屏模式下退出全屏,您可以使用 `created` 钩子函数来添加 `keydown` 事件监听器,并在 `beforeDestroy` 钩子函数中删除事件监听器。 以下是一个在 Vue 中时刻监控页面的 `ESC` 键并退出全屏的示例代码: ```vue <template> <div :class="{fullscreen: isFullscreen}" @click="toggleFullscreen"> <!-- 在这里放置您的全屏内容 --> </div> </template> <script> export default { data() { return { isFullscreen: false, }; }, created() { document.addEventListener('keydown', this.handleKeyDown); }, beforeDestroy() { document.removeEventListener('keydown', this.handleKeyDown); }, methods: { toggleFullscreen() { if (this.isFullscreen) { this.exitFullscreen(); } else { this.requestFullscreen(); } }, requestFullscreen() { const el = document.documentElement; const method = el.requestFullscreen || el.webkitRequestFullscreen || el.msRequestFullscreen || el.mozRequestFullScreen; if (method) { method.call(el); this.isFullscreen = true; } }, exitFullscreen() { const method = document.exitFullscreen || document.webkitExitFullscreen || document.msExitFullscreen || document.mozCancelFullScreen; if (method) { method.call(document); this.isFullscreen = false; } }, handleKeyDown(event) { if (event.key === 'Escape' || event.keyCode === 27) { this.exitFullscreen(); } }, }, }; </script> <style> .fullscreen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #333; color: #fff; text-align: center; font-size: 24px; padding-top: 200px; } </style> ``` 在这个示例中,我们在 Vue 组件的 `created` 钩子函数中添加了一个 `keydown` 事件监听器,并在 `beforeDestroy` 钩子函数中删除事件监听器。在 `handleKeyDown` 方法中,我们检测是否按下 `ESC` 键,并调用 `exitFullscreen` 方法来退出全屏。在 `toggleFullscreen` 方法中,我们切换全屏模式,并在模板中使用 `:class="{fullscreen: isFullscreen}"` 来控制全屏模式下的样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值