Skip to main content
VelinStyle v0.8.0
⌂ Home
  1. Docs
  2. Components
  3. Lightbox

Lightbox

A fullscreen overlay gallery for images and videos. The <velin-lightbox> web component supports keyboard navigation, touch gestures, and mixed media.

Wrap thumbnail links inside <velin-lightbox>. Each <a> points to the full-size image.

<velin-lightbox>
  <a href="photo-full-1.jpg" data-caption="Mountain lake">
    <img src="photo-thumb-1.jpg" alt="Mountain lake">
  </a>
  <a href="photo-full-2.jpg" data-caption="Dog portrait">
    <img src="photo-thumb-2.jpg" alt="Dog portrait">
  </a>
  <a href="photo-full-3.jpg" data-caption="Misty forest">
    <img src="photo-thumb-3.jpg" alt="Misty forest">
  </a>
</velin-lightbox>

Keyboard navigation

The lightbox traps focus while open and supports / to navigate, Escape to close. Screen readers announce slide changes via a live region.

<!-- Keyboard nav is built-in. No extra attributes needed. -->
<velin-lightbox>
  <a href="img1.jpg"><img src="thumb1.jpg" alt="Slide 1"></a>
  <a href="img2.jpg"><img src="thumb2.jpg" alt="Slide 2"></a>
</velin-lightbox>

<!-- Key bindings:
  ← / →   Navigate slides
  Escape   Close lightbox
  Home     First slide
  End      Last slide
-->

Video support

Add data-type="video" to a link to embed a <video> or iframe inside the lightbox.

<velin-lightbox>
  <a href="photo.jpg">
    <img src="photo-thumb.jpg" alt="Photo">
  </a>
  <a href="clip.mp4" data-type="video" data-caption="Short clip">
    <img src="video-poster.jpg" alt="Video thumbnail">
  </a>
  <a href="https://www.youtube.com/embed/dQw4w9WgXcQ"
     data-type="iframe" data-caption="YouTube embed">
    <img src="yt-thumb.jpg" alt="YouTube video">
  </a>
</velin-lightbox>

CSS variables

Customise the lightbox appearance via CSS custom properties.

velin-lightbox {
  --velin-lightbox-bg: rgba(0, 0, 0, .92);
  --velin-lightbox-z-index: 1090;
  --velin-lightbox-caption-color: #fff;
  --velin-lightbox-btn-size: 2.5rem;
  --velin-lightbox-transition: .3s ease;
}

Theme wählen