全屏解决方案 (screenfull or vueuse)

本文介绍了如何在Vue2项目中正确安装和使用ScreenFull库实现全屏功能,包括解决与element-ui组件兼容性问题的方法,以及使用vueuse库的UseFullscreen组件示例。
摘要由CSDN通过智能技术生成

ScreenFull 使用 (方案一)

参考文章@朝阳 39

参考文章@半夏_2021

安装

npm install screenfull --save
(默认是 6.0,vue2 环境下会报错,所以需要安装 5.1.0)

vue2 安装

npm i screenfull@5.1.0

引入

import screenfull from “screenfull”;

调用

// 属性
screenfull.isFullscreen; // 布尔值——当前页面是否全屏
screenfull.isEnabled; // 布尔值——当前浏览器是否支持全屏

// 方法
screenfull.request(); // 全屏
screenfull.exit(); // 退出全屏
screenfull.toggle(); // 全屏切换 (将指定元素作为参数传入,则只会对该元素进行全屏切换)

案例

<i class="el-icon-full-screen" @click="fullScreenHandler">供应商风险评定</i>

<script>
    import screenfull from 'screenfull'
   function fullScreenHandler() {
    if (screenfull.isEnabled && !screenfull.isFullscreen) {
      screenfull.toggle(this.$refs.fullScreen)
      console.log('点击全屏')
    }
  },
</script>

踩坑报错并解决

因为版本问题报错

  • 如果你使用的是 vue2,则使用 5.1.0,因为默认安装 版本是 6.0,在 vue2 环境下会报错
  • vue2 安装指令 : npm i screenfull@5.1.0

screenFull 配合 element-ui 使用报错

element[fn.requestFullscreen] is not a function

如何想让 elementui 组件使用全屏功能,可能会报上述错误.

解决办法:

在 elementui 组件外面包一层 div,并给该 div 添加 ref=“screenFull”

screenFull.isFullscreen 属性一直返回 false

错误代码:

<i class="el-icon-full-screen" @click="fullScreenHandler">全屏</i>

<script>
  //  点击全屏的时候 ,screenfull.isFullscreen 一直返回false
  fullScreenHandler() {
    console.log('request-全屏', screenfull.isFullscreen)
    if (screenfull.isEnabled && !screenfull.isFullscreen) {
      screenfull.toggle(this.$refs.fullScreen)
    }
  },
</script>

解决方法:

在文件初始化(mounted)的时候,监听 screenfull 的变化,然后判断是否为全屏
注意: 尽量在 mounted 的时候监听。,不要在 点击全屏按钮的时候监听,否则会重复添加 change 的监听事件

<i class="el-icon-full-screen" @click="fullScreenHandler">全屏</i>

<script>
  mounted() {
    // 关键代码 ,监听 screenfull 的change事件,然后判断是否为全屏 给全局变量 isFullsccreeen 赋值
    screenfull.on('change', () => {
      this.isFullscreen = screenfull.isFullscreen
      // 监听change事件后, 全屏时 screenfull.isFullscreen 返回 true , 退出全屏时返回 false
      console.log('change', screenfull.isFullscreen)
    })

  }
  fullScreenHandler() {
    if (screenfull.isEnabled && !screenfull.isFullscreen) {
      screenfull.toggle(this.$refs.fullScreen)
    }
  },
</script>

VueUse useFullscreen 使用 (方案二)

vueuse 文档

<UseFullscreen v-slot="{ toggle }">
  <video />
  <button @click="toggle">Go Fullscreen</button>
</UseFullscreen>

案例

    <button @click="toggle1">Go Fullscreen</button>
    <div
      ref="box"
      class="box"
      style="height: 300px; width: 300px; background-color: tomato"
    ></div>

import { useFullscreen } from "@vueuse/core";


  methods: {
    toggle1() {
      let { toggle } = useFullscreen(this.$refs.box);
      toggle();
    },
  },

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3.0 中使用 screenfull 库进行全屏显示,可以按照以下步骤进行: 1. 安装 screenfull 库 ```shell npm install screenfull --save ``` 2. 在组件中引入 screenfull 库 ```javascript import screenfull from "screenfull"; ``` 3. 在组件中添加全屏切换方法 ```javascript toggleFullScreen() { if (screenfull.isEnabled) { screenfull.toggle(this.$refs.fullscreenRef); } } ``` 在上述代码中,我们检查了当前浏览器是否支持全屏 API,如果支持则调用 `screenfull.toggle()` 方法来切换全屏状态,其中 `this.$refs.fullscreenRef` 是需要全屏显示的元素的引用。 4. 在模板中添加全屏切换按钮 ```html <template> <div> <button @click="toggleFullScreen">全屏</button> <div ref="fullscreenRef">需要全屏显示的内容</div> </div> </template> ``` 在模板中,我们添加了一个全屏切换按钮和一个需要全屏显示的内容的引用。 完整的组件代码如下: ```html <template> <div> <button @click="toggleFullScreen">全屏</button> <div ref="fullscreenRef">需要全屏显示的内容</div> </div> </template> <script> import screenfull from "screenfull"; export default { methods: { toggleFullScreen() { if (screenfull.isEnabled) { screenfull.toggle(this.$refs.fullscreenRef); } } } }; </script> ``` 需要注意的是,虽然 screenfull 库可以帮助我们简化全屏显示的实现,但在使用该库时仍需要进行浏览器兼容性测试,保证在不同浏览器和设备上都能正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值