vue实现全屏只显示内容不显示导航条和退出全屏调用事件

一、需求尝试分析

  1. 先说一下需求:要求在第一个页面点击全屏按钮进入全屏或者第二个新的页面全屏,并且按F11或esc退出全屏回退到第一个小屏页面
    失败的尝试:显示尝试利用原生来实现,但是发现退出全屏时,我们想在F11上面添加一些事件(比如退回上一页面路由;添加弹窗等操作)无法实现,原因是浏览器不允许我们自定义F11退出全屏按键,因为如果可以自定义的话,那么有恶意的方式让用户点击全屏进去,然后我们去禁用这个全屏按钮那么岂不是用户没有办法退出了
  2. 正确如下:利用screenfull插件直接去监听页面的大小改变,不用去监听按键事件

二、实现内容全屏(导航条不显示)

  • 首先安装screenfull
npm install screenfull@4.2.0 --save
  • 在需要全屏的组件中引入
import screenfull from "screenfull";

1.页面全屏

  1. template中写好一个全屏按钮和点击事件
<div class="one" @click="btn">
            <i
              class="iconfont icon-quanping1"
              style="margin-top: 1px;"
            ></i>
          </div>
  1. 在methods中添加btn事件
btn() {
      document.documentElement.webkitRequestFullScreen(); //进入全屏
      screenfull.toggle();//全屏显示
    },

2.部分元素全屏

  1. 写好点击图标,然后在需要显示的元素上添加id
	<div
        :class="isCollapse ? 'ifa-collapsed' : 'ifa'"
        ref="full_el"
        id="screen"
      >
        <router-view />
      </div>
  1. 在methods中添加btn事件
  btn() {
       let element = document.getElementById("screen"); //指定全屏区域元素
        screenfull.toggle(this.element); //全屏显示
    },

3.退出全屏调用事件

  • 如果是跳转到第二个页面全屏的状态

当esc或f11退出全屏后,我们虽然不能监听退出全屏的按键,但是可以根据监听页面大小变化调用事件

data() {
    return {
      isFull:'',//全屏检查
      }
   }
watch: {
    isFull(newvalue, oldvalue) {
      console.log("我监听到了");
       event.keyCode=0;
       
      this.$router.go(-1);
    },
  },
methods: {
      checkFull() {
      let isFull = window.fullScreen || document.webkitIsFullScreen;
      this.isFull = isFull;
      console.log("isfull"+this.isFull);
    },
 },
created() {
     window.onresize = () => {
      //调用判断全屏的方法,用来监听
      this.checkFull();
    };
  },
 

注意点:
如果页面当中echars图或者是有组件有使用过window.onresize方法进行适应时,那么此时的created监听退出全屏会失效,解决方式:1,删点组件中的window.onresize函数 2.利用监听的方式同时监听两个onresize方法如下:

		window.addEventListener("resize", () => {
          this.myChart.resize(),//可以自定义添加多个方法
           this.checkFull();
        });

就可以解决冲突的问题了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue实现组件全屏显示的方法有两种。第一种方法是使用F11键切换全屏,这是一种浏览器原生支持的方式。用户可以按下F11键来切换全屏显示。第二种方法是使用requestFullscreen()方法来实现全屏显示。但需要注意以下几点: 1. document下没有requestFullscreen方法。 2. requestFullscreen方法只能由用户触发,不能在onload事件中触发。 3. 在页面跳转之前,需要先退出全屏。 4. 进入全屏后,元素将脱离其父元素,可能导致之前某些CSS的失效。为解决这个问题,可以使用:full-screen伪类为元素添加全屏时的样式。 5. 如果一个元素A全屏后,其子元素也要全屏,需要先让元素A退出全屏。 在Vue中,可以在组件中使用以下代码来实现全屏显示: ```javascript import screenFull from 'screenfull'; // 导入screenFull库 // 在组件中定义一个方法来实现全屏切换 const handleFullscreen = () => { if (screenFull.isEnabled) { // 判断浏览器是否支持全屏 screenFull.toggle(); // 切换全屏状态 } } // 在需要全屏显示的组件中,可以通过点击事件或其他触发方式调用handleFullscreen方法 ``` 以上代码中,我们首先导入了screenFull库,然后定义了一个方法handleFullscreen来切换全屏状态。在需要全屏显示的组件中,可以通过点击事件或其他触发方式调用handleFullscreen方法来实现全屏显示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue 组件化-全屏](https://blog.csdn.net/m0_71933813/article/details/129226033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue全屏组件](https://blog.csdn.net/hjh15827475896/article/details/123370093)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值