其他分享
首页 > 其他分享> > scrennfull全屏

scrennfull全屏

作者:互联网

原理

对于 screenfull 而言,浏览器本身已经提供了对用的 API,点击这里即可查看,这个 API 中,主要提供了两个方法:

  1. Document.exitFullscreen():该方法用于请求从全屏模式切换到窗口模式
  2. Element.requestFullscreen():该方法用于请求浏览器(user agent)将特定元素(甚至延伸到它的后代元素)置为全屏模式。

比如我们可以通过 document.getElementById('app').requestFullscreen() 在获取 id=app 的 DOM 之后,把该区域置为全屏
但是该方法存在一定的小问题,比如:可能有的区域背景颜色为黑色
所以通常情况下我们不会直接使用该 API 来去实现全屏效果,而是会使用它的包装库** screenfull**

安装:

npm install screenfull@5.1.0 --save

基于screenfull封装组件:

<template>
  <div>
    <svg-icon
      :icon="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
      @click="onToggle"
    />
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
// 引入screenfull
import screenfull from 'screenfull'

// 是否全屏
const isFullscreen = ref(false)

// 监听变化
const change = () => {
  isFullscreen.value = screenfull.isFullscreen
}

// 切换事件
const onToggle = () => {
  screenfull.toggle()
}

// 监听screenfull的change事件
onMounted(() => {
  screenfull.on('change', change)
})

// 移除screenfull的change事件
onUnmounted(() => {
  screenfull.off('change', change)
})
</script>

<style lang="scss" scoped></style>

使用该组件:

<screenfull class="right-menu-item hover-effect" />
import Screenfull from '@/components/Screenfull'

标签:const,scrennfull,API,全屏,import,screenfull,change
来源: https://www.cnblogs.com/JianXin1994/p/16180348.html