Skip to content

useFullscreen ​

Category
Export Size
1.05 kB
Last Changed
last month

Reactive Fullscreen API. It adds methods to present a specific Element (and its descendants) in full-screen mode, and to exit full-screen mode once it is no longer needed. This makes it possible to present desired content—such as an online game—using the user's entire screen, removing all browser user interface elements and other applications from the screen until full-screen mode is shut off.

Demo ​

Usage ​

js
import { useFullscreen } from '@vueuse/core'

const { isFullscreen, enter, exit, toggle } = useFullscreen()

Fullscreen specified element. Some platforms (like iOS's Safari) only allow fullscreen on video elements.

ts
const el = ref<HTMLElement | null>(null)

const { isFullscreen, enter, exit, toggle } = useFullscreen(el)
js
const el = ref(null)
const { isFullscreen, enter, exit, toggle } = useFullscreen(el)
html
<video ref="el"></video>

Component Usage ​

This function also provides a renderless component version via the @vueuse/components package. Learn more about the usage.

vue
<template>
  <UseFullscreen v-slot="{ toggle }">
    <video />
    <button @click="toggle">
      Go Fullscreen
    </button>
  </UseFullscreen>
</template>

Type Declarations ​

typescript
export interface UseFullscreenOptions extends ConfigurableDocument {
  /**
   * Automatically exit fullscreen when component is unmounted
   *
   * @default false
   */
  autoExit?: boolean
}
/**
 * Reactive Fullscreen API.
 *
 * @see https://vueuse.org/useFullscreen
 * @param target
 * @param options
 */
export declare function useFullscreen(
  target?: MaybeElementRef,
  options?: UseFullscreenOptions,
): {
  isSupported: ComputedRef<boolean>
  isFullscreen: Ref<boolean, boolean>
  enter: () => Promise<void>
  exit: () => Promise<void>
  toggle: () => Promise<void>
}
export type UseFullscreenReturn = ReturnType<typeof useFullscreen>

Source ​

Source • Demo • Docs

Contributors ​

Anthony Fu
Fernando Fernández
wheat
Antério Vieira
Anthony Fu
tawen
zaqvil
Yvan Zhu
vaakian X
Jelf
webfansplz
Shinigami
Alex Kozack

Changelog ​

v12.0.0-beta.1 on 11/21/2024
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
v10.2.1 on 6/28/2023
14edb - fix: skip exiting when not in fullscreen mode (#3144)
v10.1.0 on 4/22/2023
4a7a1 - fix: isFullscreen handling for mutliple fullscreen elements (#3000)
v10.0.0-beta.3 on 4/12/2023
2e467 - fix!: better cross-platform compatibility (#2915)
v10.0.0-beta.0 on 3/14/2023
9d394 - fix: handle Safari iOS (#2822)
v9.11.0 on 1/17/2023
d5321 - fix(components): mark defineComponent as pure (#2623)

Released under the MIT License.