Skip to content

Vimeo Video Extension

The Vimeo Video extension allows you to embed Vimeo videos in the VistaView lightbox instead of images.

import { vistaView } from 'vistaview';
import { vimeoVideo } from 'vistaview/extensions/vimeo-video';
import 'vistaview/style.css';
vistaView({
elements: '#gallery a',
extensions: [vimeoVideo()],
});
<script src="https://unpkg.com/vistaview/dist/vistaview.umd.js"></script>
<script src="https://unpkg.com/vistaview/dist/extensions/vimeo-video.umd.js"></script>
<script>
VistaView.vistaView({
elements: '#gallery a',
extensions: [VistaView.vimeoVideo()],
});
</script>

Create links pointing to Vimeo video URLs:

<div id="gallery">
<!-- Various Vimeo URL formats supported -->
<a href="https://vimeo.com/123456789">
<img src="/thumbnails/video1.jpg" alt="Video 1" />
</a>
<a href="https://player.vimeo.com/video/123456789">
<img src="/thumbnails/video2.jpg" alt="Video 2" />
</a>
</div>

The extension provides helper functions to generate Vimeo thumbnail URLs from video URLs:

import { getVimeoThumbnail, parseVimeoVideoId } from 'vistaview/extensions/vimeo-video';
// Generate thumbnail URL from video URL
const thumbnailUrl = getVimeoThumbnail('https://vimeo.com/123456789');
// Returns: "https://vumbnail.com/123456789.jpg"
// Or extract just the video ID
const videoId = parseVimeoVideoId('https://vimeo.com/123456789');
// Returns: "123456789"
<div id="gallery"></div>
<script type="module">
import { vistaView } from 'vistaview';
import { vimeoVideo, getVimeoThumbnail } from 'vistaview/extensions/vimeo-video';
import 'vistaview/style.css';
// Array of Vimeo video URLs
const videos = [
'https://vimeo.com/123456789',
'https://player.vimeo.com/video/987654321',
'https://vimeo.com/555666777',
];
// Generate gallery dynamically with thumbnails
const gallery = document.getElementById('gallery');
videos.forEach((videoUrl) => {
const link = document.createElement('a');
link.href = videoUrl;
const img = document.createElement('img');
img.src = getVimeoThumbnail(videoUrl);
img.alt = 'Video thumbnail';
img.style.width = '200px';
link.appendChild(img);
gallery.appendChild(link);
});
vistaView({
elements: '#gallery a',
extensions: [vimeoVideo()],
});
</script>

The extension automatically detects and parses these Vimeo URL formats:

  • https://vimeo.com/VIDEO_ID
  • https://player.vimeo.com/video/VIDEO_ID
  • https://www.vimeo.com/VIDEO_ID
  • Autoplay - Videos automatically start playing when opened
  • Responsive sizing - Videos maintain 16:9 aspect ratio
  • Full controls - All Vimeo player controls available
  • High quality - Videos play at the best available quality

You can mix images and Vimeo videos in the same gallery:

<div id="gallery">
<!-- Image -->
<a href="/images/photo1.jpg">
<img src="/thumbnails/photo1.jpg" alt="Photo 1" />
</a>
<!-- Vimeo Video -->
<a href="https://vimeo.com/123456789">
<img src="/thumbnails/video.jpg" alt="Video" />
</a>
<!-- Another Image -->
<a href="/images/photo2.jpg">
<img src="/thumbnails/photo2.jpg" alt="Photo 2" />
</a>
</div>

The extension creates videos with a maximum width of 800px (or window width, whichever is smaller) while maintaining a 16:9 aspect ratio.

  • ESM: 2.65 KB (1.24 KB gzip)
  • UMD: 13.69 KB (4.19 KB gzip)

This extension embeds Vimeo videos using the standard Vimeo player. The player may use cookies and track user interactions according to Vimeo’s privacy policy.

  • No zoom controls - Videos cannot be zoomed like images
  • Requires internet connection - Videos stream from Vimeo
  • Vimeo Terms of Service - Ensure compliance with Vimeo’s ToS
  • Private videos - Requires proper authentication/permissions
import { vistaView } from 'vistaview';
import { youtubeVideo } from 'vistaview/extensions/youtube-video';
import { vimeoVideo } from 'vistaview/extensions/vimeo-video';
vistaView({
elements: '#gallery a',
extensions: [youtubeVideo(), vimeoVideo()],
});
GitHubnpmllms.txtContext7

© 2026 • MIT License