taille et légende img lightbox
This commit is contained in:
@@ -569,24 +569,50 @@ function showImage(index) {
|
|||||||
if (index >= images.length) index = 0;
|
if (index >= images.length) index = 0;
|
||||||
currentIndex = index;
|
currentIndex = index;
|
||||||
|
|
||||||
img.src = images[currentIndex].getAttribute('src');
|
const currentImg = images[currentIndex];
|
||||||
|
|
||||||
const captionText = images[currentIndex]
|
// 👉 1. Utiliser l'IMAGE ORIGINALE (href du <a>) si possible
|
||||||
.closest('.cadre-img-zoom')
|
const parentLink = currentImg.closest('a');
|
||||||
?.nextElementSibling?.querySelector('.image-field-caption p')
|
if (parentLink && parentLink.getAttribute('href')) {
|
||||||
?.textContent || '';
|
img.src = parentLink.getAttribute('href');
|
||||||
|
} else {
|
||||||
|
img.src = currentImg.getAttribute('src');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 👉 2. Trouver le conteneur qui porte la légende
|
||||||
|
// - Cas 1 : <div><div class="cadre-img-zoom"><img></div><blockquote class="image-field-caption">...</blockquote></div>
|
||||||
|
// - Cas 2 : <div class="images"><a><img></a><blockquote class="image-field-caption">...</blockquote></div>
|
||||||
|
const wrapper =
|
||||||
|
currentImg.closest('.cadre-img-zoom')?.parentElement || // cas 1
|
||||||
|
currentImg.closest('.images'); // cas 2
|
||||||
|
|
||||||
|
let captionText =
|
||||||
|
wrapper?.querySelector('.image-field-caption p')?.textContent ||
|
||||||
|
currentImg.alt || // fallback si pas de blockquote
|
||||||
|
'';
|
||||||
|
|
||||||
caption.textContent = captionText;
|
caption.textContent = captionText;
|
||||||
|
|
||||||
lightbox.style.display = 'flex';
|
lightbox.style.display = 'flex';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Clic sur une image
|
// Clic sur une image
|
||||||
images.forEach((image, index) => {
|
images.forEach((image, index) => {
|
||||||
image.addEventListener('click', (e) => {
|
image.addEventListener('click', (e) => {
|
||||||
e.preventDefault(); // empêche le <a> de naviguer
|
e.preventDefault(); // empêche le <a> de s'ouvrir
|
||||||
e.stopPropagation(); // (optionnel) empêche d'autres handlers de se déclencher
|
e.stopPropagation(); // empêche des comportements externes
|
||||||
showImage(index);
|
showImage(index);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 🔒 Empêche le clic sur le <a> parent d'agir aussi
|
||||||
|
const parentLink = image.closest('a');
|
||||||
|
if (parentLink) {
|
||||||
|
parentLink.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -511,24 +511,50 @@ function showImage(index) {
|
|||||||
if (index >= images.length) index = 0;
|
if (index >= images.length) index = 0;
|
||||||
currentIndex = index;
|
currentIndex = index;
|
||||||
|
|
||||||
img.src = images[currentIndex].getAttribute('src');
|
const currentImg = images[currentIndex];
|
||||||
|
|
||||||
const captionText = images[currentIndex]
|
// 👉 1. Utiliser l'IMAGE ORIGINALE (href du <a>) si possible
|
||||||
.closest('.cadre-img-zoom')
|
const parentLink = currentImg.closest('a');
|
||||||
?.nextElementSibling?.querySelector('.image-field-caption p')
|
if (parentLink && parentLink.getAttribute('href')) {
|
||||||
?.textContent || '';
|
img.src = parentLink.getAttribute('href');
|
||||||
|
} else {
|
||||||
|
img.src = currentImg.getAttribute('src');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 👉 2. Trouver le conteneur qui porte la légende
|
||||||
|
// - Cas 1 : <div><div class="cadre-img-zoom"><img></div><blockquote class="image-field-caption">...</blockquote></div>
|
||||||
|
// - Cas 2 : <div class="images"><a><img></a><blockquote class="image-field-caption">...</blockquote></div>
|
||||||
|
const wrapper =
|
||||||
|
currentImg.closest('.cadre-img-zoom')?.parentElement || // cas 1
|
||||||
|
currentImg.closest('.images'); // cas 2
|
||||||
|
|
||||||
|
let captionText =
|
||||||
|
wrapper?.querySelector('.image-field-caption p')?.textContent ||
|
||||||
|
currentImg.alt || // fallback si pas de blockquote
|
||||||
|
'';
|
||||||
|
|
||||||
caption.textContent = captionText;
|
caption.textContent = captionText;
|
||||||
|
|
||||||
lightbox.style.display = 'flex';
|
lightbox.style.display = 'flex';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Clic sur une image
|
// Clic sur une image
|
||||||
images.forEach((image, index) => {
|
images.forEach((image, index) => {
|
||||||
image.addEventListener('click', (e) => {
|
image.addEventListener('click', (e) => {
|
||||||
e.preventDefault(); // empêche le <a> de naviguer
|
e.preventDefault(); // empêche le <a> de s'ouvrir
|
||||||
e.stopPropagation(); // (optionnel) empêche d'autres handlers de se déclencher
|
e.stopPropagation(); // empêche des comportements externes
|
||||||
showImage(index);
|
showImage(index);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 🔒 Empêche le clic sur le <a> parent d'agir aussi
|
||||||
|
const parentLink = image.closest('a');
|
||||||
|
if (parentLink) {
|
||||||
|
parentLink.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user