Skip to content

Fullscreen API

This lesson explains Fullscreen API with clear examples, use cases, and best practices so you can use HTML5 APIs confidently in real web applications.

HTML5 Fullscreen API Overview

The HTML5 Fullscreen API allows web applications to display an HTML element using the entire screen. Instead of showing only inside the browser window, an element such as a video, image, presentation, game, chart, or canvas can occupy the user's entire display for a more immersive experience.

The Fullscreen API is commonly used in video players, image galleries, presentations, online games, dashboards, data visualizations, maps, document viewers, code editors, and Progressive Web Apps.

Feature Description
API Name HTML5 Fullscreen API
Main Method requestFullscreen()
Exit Method document.exitFullscreen()
Main Property document.fullscreenElement
Main Events fullscreenchange, fullscreenerror
Common Uses Videos, Games, Slides, Dashboards, Maps

Enter Fullscreen

<button id="open">
  Enter Fullscreen
</button>

<div id="viewer">
  Fullscreen Content
</div>

<script>
const viewer =
  document.querySelector("#viewer");

document
  .querySelector("#open")
  .addEventListener("click", async () => {

    await viewer.requestFullscreen();

  });
</script>

Calling requestFullscreen() requests fullscreen mode for the selected HTML element. Most browsers require this method to be triggered from a user action such as a button click.

Exit Fullscreen

document
  .querySelector("#exit")
  .addEventListener("click", async () => {

    if (document.fullscreenElement) {

      await document.exitFullscreen();

    }

  });

exitFullscreen() returns the browser to normal viewing mode.

Feature Detection

if (
  "requestFullscreen" in
  document.documentElement
) {

  console.log(
    "Fullscreen supported."
  );

} else {

  console.log(
    "Fullscreen not supported."
  );

}

Always check for browser support before attempting to enter fullscreen mode.

Fullscreen Methods and Properties

Method / Property Description Example
requestFullscreen() Requests fullscreen mode. element.requestFullscreen()
exitFullscreen() Leaves fullscreen mode. document.exitFullscreen()
fullscreenElement Returns the current fullscreen element. document.fullscreenElement
fullscreenEnabled Indicates browser support. document.fullscreenEnabled

Fullscreen Events

Event When It Fires
fullscreenchange Entering or leaving fullscreen.
fullscreenerror Request fails.

Detect Fullscreen Changes

document.addEventListener(
  "fullscreenchange",
  () => {

    if (
      document.fullscreenElement
    ) {

      console.log(
        "Entered fullscreen."
      );

    } else {

      console.log(
        "Exited fullscreen."
      );

    }

  }
);

This event is useful for updating button text, icons, layouts, or other UI elements when fullscreen mode changes.

Toggle Fullscreen

const viewer =
  document.querySelector("#viewer");

async function toggleFullscreen() {

  if (
    document.fullscreenElement
  ) {

    await document.exitFullscreen();

  } else {

    await viewer.requestFullscreen();

  }

}

Toggle functions provide a cleaner user experience by allowing the same button to enter and exit fullscreen.

Fullscreen Video Example

const video =
  document.querySelector("video");

document
  .querySelector("#fullscreen")
  .addEventListener("click", () => {

    video.requestFullscreen();

  });

Many custom video players use the Fullscreen API instead of relying on the browser's default controls.

Fullscreen Canvas Example

const canvas =
  document.querySelector("canvas");

document
  .querySelector("#play")
  .addEventListener("click", () => {

    canvas.requestFullscreen();

  });

HTML5 games often display the canvas in fullscreen mode for a more immersive gaming experience.

Handle Fullscreen Errors

document.addEventListener(
  "fullscreenerror",
  () => {

    console.error(
      "Unable to enter fullscreen."
    );

  }
);

Fullscreen requests may fail if they are not triggered by a user gesture or if browser security restrictions prevent fullscreen mode.

Browser Behavior

Behavior Description
User Gesture Required Usually yes.
HTTPS Required Recommended for production.
ESC Key Exits fullscreen.
Multiple Elements Only one element can be fullscreen at a time.
Nested Frames May require permission.

Common Fullscreen API Use Cases

  • Video streaming platforms
  • HTML5 games
  • Presentation software
  • Image galleries
  • Interactive dashboards
  • Maps and GIS applications
  • Code editors
  • Progressive Web Apps

Fullscreen API Best Practices

  • Request fullscreen only after a user gesture.
  • Always provide an Exit Fullscreen button.
  • Handle fullscreenchange events.
  • Gracefully handle request failures.
  • Provide keyboard shortcuts such as ESC.
  • Adjust layouts for fullscreen mode.
  • Test behavior across desktop and mobile browsers.
  • Use feature detection before calling the API.

Accessibility Considerations

  • Provide a clearly visible Exit Fullscreen button.
  • Maintain keyboard accessibility.
  • Do not trap keyboard focus.
  • Announce fullscreen changes when appropriate.
  • Ensure sufficient color contrast for controls.
  • Support keyboard-only navigation.

Common Fullscreen API Mistakes

  • Calling requestFullscreen() without user interaction.
  • Ignoring browser support.
  • Not handling rejected Promises.
  • Forgetting an Exit Fullscreen option.
  • Not responding to fullscreenchange events.
  • Breaking layouts after entering fullscreen.
  • Ignoring accessibility requirements.
  • Assuming every browser behaves identically.

Fullscreen API vs CSS Fullscreen Layout

Feature Fullscreen API CSS Layout
Uses Entire Monitor ✔ Yes ✘ No
Hides Browser UI ✔ Yes ✘ No
Requires User Action ✔ Yes ✘ No
Browser Controlled ✔ Yes ✘ No

Key Takeaways

  • The Fullscreen API displays an element using the entire screen.
  • Use requestFullscreen() to enter fullscreen.
  • Use document.exitFullscreen() to exit.
  • Listen for fullscreenchange to update your UI.
  • Most browsers require a user gesture before entering fullscreen.
  • Always provide accessible controls and graceful fallbacks.

Pro Tip

Combine the Fullscreen API with the Screen Orientation API, Pointer Lock API, Keyboard API, and Gamepad API to create immersive experiences such as games, presentations, media players, and interactive dashboards.