跳转到内容

组件 ​

把内容放进组件,控制 v-model 来进入和退出全屏。退出全屏时,绑定的状态会自动变回 false。

演练场 ​

编辑此示例

正在加载示例…

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

const isFullscreen = ref(false)

function report(error) {
  isFullscreen.value = false
  console.error(error)
}
</script>

<template>
  <div>
    <button :disabled="isFullscreen" @click="isFullscreen = true">
      进入全屏
    </button>
    <Fullscreen
      v-model="isFullscreen"
      :page-only="false"
      :teleport="true"
      @error="report"
    >
      <button v-if="isFullscreen" @click="isFullscreen = false">
        退出全屏
      </button>
      <!-- 需要全屏的内容 -->
    </Fullscreen>
  </div>
</template>

组件属性(Props) ​

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

实例属性 ​

通过组件 ref 读取。

属性类型作用
isFullscreenboolean当前全屏状态
isSupportedboolean原生全屏是否可用

事件 ​

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

方法 ​

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

const panel = ref()
const error = ref('')
async function enter() {
  try {
    await panel.value.enter()
  } catch (reason) {
    error.value = reason.message
  }
}
</script>

<template>
  <button @click="enter">进入全屏</button>
  <Fullscreen ref="panel" page-only>内容</Fullscreen>
  <p v-if="error" role="alert">{{ error }}</p>
</template>
方法签名作用
enter(): Promise<void>请求全屏
exit(): Promise<void>退出全屏
toggle(force?: boolean): Promise<void>切换或指定状态

旧版本迁移 ​

使用 enter() 替代 request(),使用 isSupported 替代 isEnabled。旧名称作为兼容入口保留。

旧版的 fullscreen 属性和 update:fullscreen 事件仅作为兼容接口保留,新代码使用 v-model。

js
// 旧写法
import VueFullscreen from 'vue-fullscreen'
app.use(VueFullscreen)

// 新写法
import { Fullscreen } from 'vue-fullscreen'
vue
<!-- 旧写法 -->
<fullscreen
  :fullscreen="isFullscreen"
  @update:fullscreen="isFullscreen = $event"
/>

<!-- 新写法 -->
<Fullscreen v-model="isFullscreen" />

基于 MIT 许可发布