Skip to content
FrameworkStyle

FullscreenButton

Accessible fullscreen toggle button with keyboard support and state reflection

Anatomy

<FullscreenButton />

Behavior

Toggles fullscreen mode. Detects platform support through availability — when fullscreen is "unsupported", the toggle does nothing.

Styling

You can style the button based on fullscreen state:

React renders a <button> element. Add a className to style it:

/* In fullscreen */
.fullscreen-button[data-fullscreen] {
  background: red;
}

/* Disabled (prop or feature unavailable) */
.fullscreen-button[data-disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

In React, the button returns null when unsupported — no CSS needed. When disabled (via the disabled prop or because the feature is not available), the button remains visible with data-disabled for styling.

Accessibility

Renders a <button> with an automatic aria-label: “Enter fullscreen” or “Exit fullscreen”. Override with the label prop. Keyboard activation: Enter / Space. Both disabled and unavailable states set aria-disabled="true" so screen readers announce the button as non-interactive.

Examples

Basic Usage

import { createPlayer, FullscreenButton } from '@videojs/react';
import { Video, videoFeatures } from '@videojs/react/video';

const Player = createPlayer({ features: videoFeatures });

export default function BasicUsage() {
  return (
    <Player.Provider>
      <Player.Container className="media-container">
        <Video
          src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4"
          autoPlay
          muted
          playsInline
          loop
        />
        <FullscreenButton
          className="media-fullscreen-button"
          render={(props, state) => <button {...props}>{state.fullscreen ? 'Exit Fullscreen' : 'Fullscreen'}</button>}
        />
      </Player.Container>
    </Player.Provider>
  );
}

API Reference

Props

Prop Type Default Details
disabled boolean false
label string | function ''

State

State is accessible via the render, className, and style props.

Property Type Details
availability 'available' | 'unavailable' | 'unsupp...
disabled boolean
hidden boolean
fullscreen boolean
label string

Data attributes

Attribute Type Details
data-fullscreen
data-availability 'available' | 'unavailable' | 'unsupp...
data-disabled
data-hidden