FrameworkStyle

Customize skins

Learn how to customize Video.js v10 skins by copying and modifying them

Video.js v10 comes with pre-built skins like Frosted and Minimal, but you can fully customize them by “ejecting” the code and making it your own.

While eventually we’ll have a CLI that’ll eject skins in your preferred framework and style, for now we invite you to try it out with these copy-paste-ready implementations.

Frosted skin

<video-provider>
  <media-container>
    <video
      slot="media"
      src="https://stream.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/high.mp4"
      playsinline
      poster="https://image.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/thumbnail.webp"
    ></video>

    <div class="overlay"></div>

    <div class="control-bar surface">
      <media-play-button commandfor="play-tooltip" class="button">
        <media-play-icon class="icon play-icon"></media-play-icon>
        <media-pause-icon class="icon pause-icon"></media-pause-icon>
      </media-play-button>
      <media-tooltip
        id="play-tooltip"
        class="surface popup-animation"
        popover="manual"
        delay="500"
        side="top"
        side-offset="12"
        collision-padding="12"
      >
        <span class="tooltip play-tooltip">Play</span>
        <span class="tooltip pause-tooltip">Pause</span>
      </media-tooltip>

      <div class="time-controls">
        <!-- Use the show-remaining attribute to show count down/remaining time -->
        <media-current-time-display></media-current-time-display>

        <media-time-slider commandfor="time-slider-tooltip" class="slider">
          <media-time-slider-track class="slider-track">
            <media-time-slider-progress class="slider-progress"></media-time-slider-progress>
            <media-time-slider-pointer class="slider-pointer"></media-time-slider-pointer>
          </media-time-slider-track>
          <media-time-slider-thumb class="slider-thumb"></media-time-slider-thumb>
        </media-time-slider>
        <media-tooltip
          id="time-slider-tooltip"
          class="surface popup-animation"
          popover="manual"
          track-cursor-axis="x"
          side="top"
          side-offset="18"
          collision-padding="12"
        >
          <media-preview-time-display></media-preview-time-display>
        </media-tooltip>

        <media-duration-display></media-duration-display>
      </div>

      <media-mute-button commandfor="volume-slider-popover" command="toggle-popover" class="button">
        <media-volume-high-icon class="icon volume-high-icon"></media-volume-high-icon>
        <media-volume-low-icon class="icon volume-low-icon"></media-volume-low-icon>
        <media-volume-off-icon class="icon volume-off-icon"></media-volume-off-icon>
      </media-mute-button>
      <media-popover
        id="volume-slider-popover"
        class="surface popup-animation"
        popover="manual"
        open-on-hover
        delay="200"
        close-delay="100"
        side="top"
        side-offset="12"
        collision-padding="12"
      >
        <media-volume-slider class="slider" orientation="vertical">
          <media-volume-slider-track class="slider-track">
            <media-volume-slider-indicator class="slider-progress"></media-volume-slider-indicator>
          </media-volume-slider-track>
          <media-volume-slider-thumb class="slider-thumb"></media-volume-slider-thumb>
        </media-volume-slider>
      </media-popover>

      <media-fullscreen-button commandfor="fullscreen-tooltip" class="button">
        <media-fullscreen-enter-icon class="icon fullscreen-enter-icon"></media-fullscreen-enter-icon>
        <media-fullscreen-exit-icon class="icon fullscreen-exit-icon"></media-fullscreen-exit-icon>
      </media-fullscreen-button>
      <media-tooltip
        id="fullscreen-tooltip"
        class="surface popup-animation"
        popover="manual"
        delay="500"
        side="top"
        side-offset="12"
        collision-padding="12"
      >
        <span class="tooltip fullscreen-enter-tooltip">Enter Fullscreen</span>
        <span class="tooltip fullscreen-exit-tooltip">Exit Fullscreen</span>
      </media-tooltip>
    </div>
  </media-container>
</video-provider>

Minimal skin

<video-provider>
  <media-container>
    <video
      slot="media"
      src="https://stream.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/high.mp4"
      playsinline
      poster="https://image.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/thumbnail.webp"
    ></video>

    <div class="overlay"></div>

    <div class="control-bar">
      <media-play-button commandfor="play-tooltip" class="button">
        <media-play-icon class="icon play-icon"></media-play-icon>
        <media-pause-icon class="icon pause-icon"></media-pause-icon>
      </media-play-button>
      <media-tooltip
        id="play-tooltip"
        class="popup-animation"
        popover="manual"
        delay="500"
        side="top"
        side-offset="6"
        collision-padding="12"
      >
        <span class="tooltip play-tooltip">Play</span>
        <span class="tooltip pause-tooltip">Pause</span>
      </media-tooltip>

      <div class="time-display-group">
        <!-- Use the show-remaining attribute to show count down/remaining time -->
        <media-current-time-display></media-current-time-display>

        <span class="duration-display">
          /
          <media-duration-display></media-duration-display>
        </span>
      </div>

      <media-time-slider commandfor="time-slider-tooltip" class="slider">
        <media-time-slider-track class="slider-track">
          <media-time-slider-progress class="slider-progress"></media-time-slider-progress>
          <media-time-slider-pointer class="slider-pointer"></media-time-slider-pointer>
        </media-time-slider-track>
        <media-time-slider-thumb class="slider-thumb"></media-time-slider-thumb>
      </media-time-slider>
      <media-tooltip
        id="time-slider-tooltip"
        class="popup-animation"
        popover="manual"
        track-cursor-axis="x"
        side="top"
        side-offset="12"
        collision-padding="12"
      >
        <media-preview-time-display></media-preview-time-display>
      </media-tooltip>

      <div class="button-group">
        <media-mute-button commandfor="volume-slider-popover" command="toggle-popover" class="button">
          <media-volume-high-icon class="icon volume-high-icon"></media-volume-high-icon>
          <media-volume-low-icon class="icon volume-low-icon"></media-volume-low-icon>
          <media-volume-off-icon class="icon volume-off-icon"></media-volume-off-icon>
        </media-mute-button>
        <media-popover
          id="volume-slider-popover"
          class="popup-animation"
          popover="manual"
          open-on-hover
          delay="200"
          close-delay="100"
          side="top"
          side-offset="2"
          collision-padding="12"
        >
          <media-volume-slider class="slider" orientation="vertical">
            <media-volume-slider-track class="slider-track">
              <media-volume-slider-indicator class="slider-progress"></media-volume-slider-indicator>
            </media-volume-slider-track>
            <media-volume-slider-thumb class="slider-thumb"></media-volume-slider-thumb>
          </media-volume-slider>
        </media-popover>

        <media-fullscreen-button commandfor="fullscreen-tooltip" class="button">
          <media-fullscreen-enter-alt-icon class="icon fullscreen-enter-icon"></media-fullscreen-enter-alt-icon>
          <media-fullscreen-exit-alt-icon class="icon fullscreen-exit-icon"></media-fullscreen-exit-alt-icon>
        </media-fullscreen-button>
        <media-tooltip
          id="fullscreen-tooltip"
          class="popup-animation"
          popover="manual"
          delay="500"
          side="top"
          side-offset="6"
          collision-padding="12"
        >
          <span class="tooltip fullscreen-enter-tooltip">Enter Fullscreen</span>
          <span class="tooltip fullscreen-exit-tooltip">Exit Fullscreen</span>
        </media-tooltip>
      </div>
    </div>
  </media-container>
</video-provider>

Video.js is a free and open source HTML5 video player.
The term VIDEO.JS is a registered trademark of Brightcove Inc.
© 2010–2026 Video.js contributors  |  Sponsored by Mux

VideoJS