<media-fullscreen-button>

The <media-fullscreen-button> component is used to toggle fullscreen viewing.

The contents of the <media-fullscreen-button> will update based on the fullscreen state and availability.

  • When the media is not fullscreen, the component will switch to display the contents of the enter slot.
  • When the media is fullscreen, the component will switch to display the contents of the exit slot.
<media-controller defaultsubtitles>
  <video
    playsinline muted crossorigin
    slot="media"
    src="https://stream.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/low.mp4"
  ></video>
  <media-fullscreen-button></media-fullscreen-button>
</media-controller>

You can modify the contents of the <media-fullscreen-button> component using slots. This is useful if you’d like to use your own custom fullscreen icon instead of the default one provided by media-chrome.

Here’s an example of how you can replace the default fullscreen icons with the words “Enter” and “Exit”

<media-controller defaultsubtitles>
  <video
    playsinline muted crossorigin
    slot="media"
    src="https://stream.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/low.mp4"
  ></video>
  <media-fullscreen-button>
    <span slot="enter">Enter</span>
    <span slot="exit">Exit</span>
  </media-fullscreen-button>
</media-controller>

Alternatively, if you would like to represent both states using a single element you could use the icon slot instead. This is useful for creating an animated icon that transitions between states. Here’s a basic example that uses CSS to change an element based on the fullscreen state.

.my-icon {
  font-size: 16px;
  font-weight: 700;
  transition: color .4s;
}

media-fullscreen-button:not([mediaisfullscreen]) .my-icon span:last-child,
media-fullscreen-button[mediaisfullscreen] .my-icon span:first-child {
  display: none;
}

media-fullscreen-button[mediaisfullscreen] .my-icon {
  color: coral;
}

The <media-fullscreen-button> doesn’t expose any configuration attributes. However, it will be updated with Media UI Attributes any time the fullscreen state and availability changes.

You can use these attributes to style the button. For example, hide the button if fullscreen is unavailable:

media-fullscreen-button:not([mediafullscreenunavailable]) {
  display: none;
}

Or make the background blue if the media is fullscreen.

media-fullscreen-button[mediaisfullscreen] {
  --media-control-background: blue;
}
Name Description
enter An element shown when the media is not in fullscreen and pressing the button will trigger entering fullscreen.
exit An element shown when the media is in fullscreen and pressing the button will trigger exiting fullscreen.
icon An element for representing enter and exit states in a single icon
Name Type Description
disabled boolean The Boolean disabled attribute makes the element not mutable or focusable.
mediacontroller string The element `id` of the media controller to connect to (if not nested within).

The media UI attributes will be set automatically by the controller if they are connected via nesting or the mediacontroller attribute. Only set these attributes manually if you know what you're doing.

Name Type Description
mediafullscreenunavailable (unavailable|unsupported) Set if fullscreen is unavailable.
mediaisfullscreen boolean Present if the media is fullscreen.
Name Default Description
--media-fullscreen-button-display inline-flex display property of button.
--media-primary-color rgb(238 238 238) Default color of text and icon.
--media-secondary-color rgb(20 20 30 / .7) Default color of button background.
--media-text-color var(--media-primary-color, rgb(238 238 238)) color of button text.
--media-icon-color var(--media-primary-color, rgb(238 238 238)) fill color of button icon.
--media-control-display display property of control.
--media-control-background var(--media-secondary-color, rgb(20 20 30 / .7)) background of control.
--media-control-hover-background rgba(50 50 70 / .7) background of control hover state.
--media-control-padding 10px padding of control.
--media-control-height 24px line-height of control.
--media-font var(--media-font-weight, bold) var(--media-font-size, 14px) / var(--media-text-content-height, var(--media-control-height, 24px)) var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif) font shorthand property.
--media-font-weight bold font-weight property.
--media-font-family helvetica neue, segoe ui, roboto, arial, sans-serif font-family property.
--media-font-size 14px font-size property.
--media-text-content-height var(--media-control-height, 24px) line-height of button text.
--media-button-icon-width width of button icon.
--media-button-icon-height var(--media-control-height, 24px) height of button icon.
--media-button-icon-transform transform of button icon.
--media-button-icon-transition transition of button icon.