JSFiddle - React, Tailwind, and code Playground
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.css"
/>
</head>
<body>
<div>
<a
data-fancybox="gallery"
data-src="https://lipsum.app/id/2/1024x768"
data-caption="Ut semper, justo eget"
>
<img src="https://lipsum.app/id/2/200x150" />
</a>
<a data-fancybox="gallery" data-src="https://lipsum.app/id/3/1024x768" data-caption="Vivamus massa justo">
<img src="https://lipsum.app/id/3/200x150" />
</a>
<a data-fancybox="gallery" data-src="https://lipsum.app/id/4/1024x768" data-caption="Aenean consequat auctor posuere">
<img src="https://lipsum.app/id/4/200x150" />
</a>
</div>
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.js"></script>
<script>
Fancybox.bind('[data-fancybox="gallery"]', {
compact: false,
on: {
reveal: (fancybox, slide) => {
if (slide.contentEl && slide.captionEl) {
slide.captionEl.style.width = `${slide.contentEl.offsetWidth}px`;
}
},
resize: (fancybox) => {
for (const slide of fancybox.carousel.slides) {
if (slide.contentEl && slide.captionEl) {
slide.captionEl.style.width = `${slide.contentEl.offsetWidth}px`;
}
}
},
},
});
</script>
</body>
</html>