当前位置:首页 > VUE

vue实现点击全屏

2026-01-18 18:50:35VUE

实现点击全屏功能

在Vue中实现点击全屏功能可以通过浏览器的Fullscreen API完成。以下是一个完整的实现方案:

安装screenfull依赖

Screenfull是一个跨浏览器的全屏API封装库,简化了不同浏览器的兼容性问题:

npm install screenfull

基本组件实现

创建一个可复用的全屏按钮组件:

<template>
  <button @click="toggleFullscreen">
    {{ isFullscreen ? '退出全屏' : '全屏显示' }}
  </button>
</template>

<script>
import screenfull from 'screenfull'

export default {
  data() {
    return {
      isFullscreen: false
    }
  },
  mounted() {
    if (screenfull.isEnabled) {
      screenfull.on('change', () => {
        this.isFullscreen = screenfull.isFullscreen
      })
    }
  },
  methods: {
    toggleFullscreen() {
      if (screenfull.isEnabled) {
        screenfull.toggle()
      } else {
        alert('您的浏览器不支持全屏功能')
      }
    }
  },
  beforeDestroy() {
    if (screenfull.isEnabled) {
      screenfull.off('change')
    }
  }
}
</script>

针对特定元素全屏

如果需要让页面中特定元素全屏而非整个页面:

<template>
  <div ref="fullscreenElement">
    <!-- 内容 -->
    <button @click="toggleElementFullscreen">全屏显示元素</button>
  </div>
</template>

<script>
import screenfull from 'screenfull'

export default {
  methods: {
    toggleElementFullscreen() {
      if (screenfull.isEnabled) {
        screenfull.toggle(this.$refs.fullscreenElement)
      }
    }
  }
}
</script>

原生API实现方案

如果不希望使用第三方库,可以使用原生Fullscreen API:

<template>
  <button @click="toggleNativeFullscreen">原生全屏</button>
</template>

<script>
export default {
  methods: {
    toggleNativeFullscreen() {
      if (!document.fullscreenElement) {
        document.documentElement.requestFullscreen().catch(err => {
          console.error(`全屏错误: ${err.message}`)
        })
      } else {
        if (document.exitFullscreen) {
          document.exitFullscreen()
        }
      }
    }
  }
}
</script>

浏览器兼容性处理

不同浏览器可能需要前缀:

const requestFullscreen = element => {
  if (element.requestFullscreen) return element.requestFullscreen()
  if (element.webkitRequestFullscreen) return element.webkitRequestFullscreen()
  if (element.msRequestFullscreen) return element.msRequestFullscreen()
}

样式优化

全屏状态下可以添加特定样式:

:fullscreen, ::backdrop {
  background-color: #fff;
}

:-webkit-full-screen {
  background-color: #fff;
}

:-ms-fullscreen {
  background-color: #fff;
}

以上方案提供了从简单到复杂的多种实现方式,可根据项目需求选择适合的方法。使用screenfull库能有效处理浏览器兼容性问题,推荐在正式项目中使用。

vue实现点击全屏

标签: 全屏vue
分享给朋友:

相关文章

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSelec…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue nexttick实现

vue nexttick实现

Vue 中 nextTick 的实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它的核心实现依赖于 JavaScript 的事件循环机制。…

vue实现popper

vue实现popper

Vue 实现 Popper 的方法 使用 Tippy.js 库 Tippy.js 是一个轻量级的 Popper.js 封装库,提供丰富的工具提示功能。安装 Tippy.js 及其 Vue 封装:…