vue中监听ESC事件,全屏退出全屏

1.在需要全屏的元素上绑定一个 ref,这里用ref="fullscreenElement" 

<template>
    <div class="homeBox" ref="fullscreenElement" id="test">
        <div class="headerBox">
            <div style="position: relative; bottom: 6%; right: 10px">{{ currentTime }} {{ weekDay }}</div>
       <i  @click="toggleFullscreen"></i>
        </div>
        <div class="content">
            <div class="left">
                <leftTop/>
                <leftBottom/>
            </div>
            <div class="center">
                <centerTop/>
                <centerBottom/>
            </div>
            <div class="right">
                <rightTop/>
                <rightBottom/>
            </div>
        </div>
    </div>
</template>

2.点击全屏按钮,绑定事件

注意⚠️:这样的写法有缺点,如果你的全屏元素里面有表单,需要悬浮显示,将显示不出来;可以用另外的方法实现全屏(见 3),如果没有就用这块代码。比较简单。

   toggleFullscreen() {
        const element = this.$refs.fullscreenElement;
        if (element) {
          element.classList.toggle('fullscreen-element');
          if (document.fullscreenElement) {
            document.exitFullscreen();
          } else {
            element.requestFullscreen().catch(err => {
              console.error('进入全屏失败:', err);
            });
          }
        }
      },

3.另一种方法,是通过隐藏侧边栏顶部导航和其余的元素

    // 点击esc按钮或者浏览器退出的时候,↩↩️恢复侧边栏
    document.addEventListener('fullscreenchange', event => {
      if (document.fullscreenElement) {
        console.log(`Element: ${document.fullscreenElement.id} entered full-screen mode.`)
      } else {
        console.log('Leaving full-screen mode.')
        const header = document.querySelector('header')
        const aside = document.querySelector('aside')
        const placeholder = document.querySelector('.placeholder')
        const homeBox = document.getElementById('test')

        header.style.display = 'block'
        aside.style.display = 'block'
        placeholder.style.display = 'block'
        homeBox.style.height = 'calc(100vh - 64px)'
      }
    })
    this.timer = setInterval(() => {
      this.currentTime = new Date().toLocaleString() // 获得当前时间并转换成字符串格式
    }, 1000)
  },

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值