前端vue实现全屏和按esc退出全屏功能

效果如下:
在这里插入图片描述
在这里插入图片描述

不多说,直接上代码如下,复制即可使用,注意图片位置修改即可:

1、vue页面中根据是否全屏判断当前显示图片或icon图标,isFullScren为true时表示全屏,默认值为false,并绑定click事件

 <el-tooltip
            :content="isFullScren?'退出全屏':'全屏'"
            effect="dark"
            placement="bottom">
            <div class="top-bar__item" style="height: 30px;" @click="fullScreenEvent">
              <!--<img style="height:20px;margin:0 10px" :src="isFullScren?tuichuquanping:quanping"/>-->
              <i :class="isFullScren?'el-icon-crop':'el-icon-full-screen'" @click="fullScreenEvent"></i>
            </div>
 </el-tooltip>

2、click全屏事件

 data() {
    return {
      isFullScren:false,
      quanping:require('@/assets/img/header/quanping.png'),
      tuichuquanping:require('@/assets/img/header/tuichuquanping.png')
     }
 }

methods: {
    fullScreenEvent() {
      let el = document.documentElement;
      if (this.isFullScren) {
        if (document.exitFullscreen) {
          document.exitFullscreen();
        } else if (document.mozCancelFullScreen) {
          document.mozCancelFullScreen();
        } else if (document.webkitCancelFullScreen) {
          document.webkitCancelFullScreen();
        } else if (document.msExitFullscreen) {
          document.msExitFullscreen();
        }
      } else {
        if (el.requestFullscreen) {
          el.requestFullscreen();
        } else if (el.mozRequestFullScreen) {
          el.mozRequestFullScreen();
        } else if (el.webkitRequestFullScreen) {
          el.webkitRequestFullScreen();
        } else if (el.msRequestFullscreen) {
          el.msRequestFullscreen();
        }
      }
    },
}

3、 页面初始化渲染完成后,绑定fullscreenchange的全屏改变监听事件,这样按esc退出全屏时也会触发

mounted() {
    let isFullscreen =
      document.fullscreenElement ||
      document.mozFullScreenElement ||
      document.webkitFullscreenElement ||
      document.fullScreen ||
      document.mozFullScreen ||
      document.webkitIsFullScreen;
      isFullscreen = !!isFullscreen;
    let that = this;
    document.addEventListener("fullscreenchange", () => {
      that.isFullScren = !that.isFullScren;
    });
    document.addEventListener("mozfullscreenchange", () => {
      that.isFullScren = !that.isFullScren;
    });
    document.addEventListener("webkitfullscreenchange", () => {
      that.isFullScren = !that.isFullScren;
    });
    document.addEventListener("msfullscreenchange", () => {
      that.isFullScren = !that.isFullScren;
    });
},
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值