跳转到内容

Vue 2 组件 ​

使用 v-model 控制全屏状态。它对应 value 属性和 input 事件;按 Esc 退出时,绑定值会同步更新。

本页参考

完整的属性、事件和方法列表见组件参考。

局部注册 ​

vue
<template>
  <div>
    <button @click="active = true">进入全屏</button>
    <Fullscreen v-model="active" page-only teleport @error="handleError">
      <h2>内容区域</h2>
      <button @click="active = false">退出全屏</button>
    </Fullscreen>
    <p v-if="error" role="alert">{{ error }}</p>
  </div>
</template>

<script>
import { Fullscreen } from 'vue-fullscreen'

export default {
  components: { Fullscreen },
  data: () => ({ active: false, error: '' }),
  methods: {
    handleError(error) {
      this.active = false
      this.error = error.message
    },
  },
}
</script>

用 ref 调用方法 ​

通过 this.$refs.panel 可以调用组件实例:

js
async enterPanel() {
  try { await this.$refs.panel.request() }
  catch (error) { this.error = error.message }
}

模板中的组件需要设置 ref="panel"。实例提供 request()、exit()、toggle(force?),以及兼容方法 enter()、getState() 和属性 support。

参考 ​

属性 ​

属性类型默认值说明
valuebooleanfalsev-model 绑定值
pageOnlybooleanfalse仅填满网页;不支持原生 API 时自动启用
teleportbooleanfalse全屏期间将元素移动到 body
fullscreenClassstring'fullscreen'激活期间的 class
exitOnClickWrapperbooleantrue点击容器背景退出;点击子元素不会触发
fullscreenbooleanfalse已废弃的模型属性,保留兼容

不要同时用多个模型属性控制相互矛盾的状态。

事件 ​

事件参数时机
changeboolean全屏状态改变
inputboolean同步 v-model
update:fullscreenboolean同步旧模型属性
error错误对象模型变化或容器点击触发的操作失败

实例 ​

成员类型 / 签名作用
request(): Promise<void>请求全屏
exit(): Promise<void>退出全屏
toggle(force?: boolean): Promise<void>切换或指定状态
isFullscreenboolean当前全屏状态
isEnabledboolean原生全屏是否可用
enter(): Promise<void>request 的兼容入口
getState(): boolean读取全屏状态
supportbooleanisEnabled 的兼容属性

直接调用方法时捕获返回 Promise 的拒绝。组件卸载时清理监听器和被移动的 DOM。

基于 MIT 许可发布