FullscreenButton

A button that enters and exits fullscreen.

import { FullscreenButton } from 'react-media-kit'
import { FullscreenButton } from 'react-media-kit'

<FullscreenButton.Root className="fullscreen">Fullscreen</FullscreenButton.Root>

Render it inside Player.Root, next to a Media.Video or Media.Audio.

Anatomy

<FullscreenButton.Root />

API reference

It accepts the attributes of the <button> it renders, plus a ref, and sets the media state attributes. Passing aria-label replaces a default label.

FullscreenButton.Root

renders <button>

Toggles fullscreen for the Player.Container in the same Player.Root; without one, nothing happens. Browsers that can only make the video itself fullscreen, such as Safari on iPhone, do that instead. Place the button inside the container so it stays visible in fullscreen.

Its aria-label is "Enter fullscreen", or "Exit fullscreen" while fullscreen.

Data attributeDescription
data-fullscreenThe player is fullscreen.

Your onClick runs before the built-in one; call event.preventDefault() in it to skip the built-in behavior.

Media state attributes

Five of these describe loading, and exactly one of them is set at a time. The other three mark features the browser lacks. Use them to hide controls that can’t work, or to style the player while it loads.

Data attributeDescription
data-media-pendingLoading hasn’t started. This is the initial state.
data-media-loadingThe media has started loading.
data-media-metadata-loadedThe duration and dimensions are known, but there isn’t enough data to play yet.
data-media-playableThe media can play. It stays set if playback later stalls to buffer.
data-media-errorThe media element reported an error, such as a network or decoding failure. A blocked play() call doesn’t set it; use onError for that.
data-fullscreen-unsupportedThe browser can’t go fullscreen, or support hasn’t been detected yet.
data-pip-unsupportedPicture-in-picture isn’t available, such as for audio, or support hasn’t been detected yet.
data-volume-change-unsupportedThe browser doesn’t let scripts set the volume, such as on iOS, or support hasn’t been detected yet.