vue如何对页面元素进行全屏,及监听全屏状态

<template>
  <div id="app">
    <div id="screen"></div>
    <div @click="enterfullscreen" class="but">全屏</div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      screen: false
    }
  },
  created() {
    let that = this
    //通过一下时间判断当前页面是否处于全部状态,根据状态的不同对screen的值进行改变(监听状态)
    
    document.addEventListener('fullscreenchange', () => {
      that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
    });
    //火狐
    document.addEventListener('mozfullscreenchange', () => {
      that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
    });
    // 谷歌
    document.addEventListener('webkitfullscreenchange', () => {
      that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
    });
    // ie
    document.addEventListener('msfullscreenchange', () => {
      that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
    });
  },
  methods: {
    //控制全屏
    enterfullscreen() { //进入全屏/判断页面是否全屏状态
      let docElm = document.getElementById('screen')
      //W3C
      if (docElm.requestFullscreen) {
        docElm.requestFullscreen()
        this.screen = true
      }
      //FireFox
      else if (docElm.mozRequestFullScreen) {
        docElm.mozRequestFullScreen()
        this.screen = true
      }
      //Chrome等
      else if (docElm.webkitRequestFullScreen) {
        docElm.webkitRequestFullScreen()
        this.screen = true
      }
      //IE11
      else if (docElm.msRequestFullscreen) {
        docElm.msRequestFullscreen()
        this.screen = true
      }

    },
  }
}
</script>

<style>
#app {
  width: 100vw;
  height: 100vh;
}

#screen {
  width: 50%;
  height: 50%;
  border: 1px solid red;
}
.but{
  background-color: black;
  color: white;
  display: flex;
  justify-content: center;
  width: 200px;
  margin-left: 20px;
}
</style>

全局思路:同时我们可以用vuex进行全局监听,然后使用watch函数监听vuex全屏值的一个变量变化,这样我们就有了一个全局的页面全屏操作组件类似图下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值