Files
kaubuntu.re/js/main.js
T

122 lines
4.5 KiB
JavaScript
Raw Normal View History

2025-04-08 06:37:14 +04:00
document.addEventListener('DOMContentLoaded', function() {
// Gestion du menu mobile
const mobileMenuToggle = document.querySelector('.mobile-menu-toggle');
2025-04-08 06:51:33 +04:00
const mobileMenu = document.querySelector('.mobile-menu');
2025-04-08 06:37:14 +04:00
const mobileMenuClose = document.querySelector('.mobile-menu-close');
if (mobileMenuToggle) {
mobileMenuToggle.addEventListener('click', function() {
2025-04-08 06:51:33 +04:00
mobileMenu.classList.add('active');
2025-04-08 06:37:14 +04:00
document.body.style.overflow = 'hidden'; // Empêche le défilement de la page
});
}
if (mobileMenuClose) {
mobileMenuClose.addEventListener('click', function() {
2025-04-08 06:51:33 +04:00
mobileMenu.classList.remove('active');
2025-04-08 06:37:14 +04:00
document.body.style.overflow = ''; // Réactive le défilement
});
}
2025-04-08 06:51:33 +04:00
// Gestion du mode sombre
const darkModeToggle = document.querySelector('.dark-mode-toggle');
const body = document.body;
if (darkModeToggle) {
darkModeToggle.addEventListener('click', function() {
body.classList.toggle('dark-mode');
// Changer l'icône
const icon = darkModeToggle.querySelector('i');
if (body.classList.contains('dark-mode')) {
icon.classList.remove('fa-moon');
icon.classList.add('fa-sun');
} else {
icon.classList.remove('fa-sun');
icon.classList.add('fa-moon');
2025-04-08 06:37:14 +04:00
}
});
}
2025-04-08 06:51:33 +04:00
// Gestion des carousels
const carousels = document.querySelectorAll('.carousel');
carousels.forEach(carousel => {
const container = carousel.querySelector('.carousel-container');
const dots = carousel.querySelectorAll('.carousel-dot');
const items = carousel.querySelectorAll('.carousel-item');
if (dots.length > 0 && items.length > 0) {
dots.forEach((dot, index) => {
dot.addEventListener('click', function() {
// Calculer la distance à translater
const itemWidth = items[0].offsetWidth + parseInt(getComputedStyle(items[0]).marginRight);
const newTransform = -index * itemWidth;
// Appliquer la transformation
container.style.transform = `translateX(${newTransform}px)`;
// Mettre à jour les dots
dots.forEach(d => d.classList.remove('active'));
dot.classList.add('active');
});
});
}
});
// Gestion des clics sur les vidéos
2025-04-08 06:37:14 +04:00
const videoCards = document.querySelectorAll('.video-card');
videoCards.forEach(card => {
card.addEventListener('click', function() {
const videoId = this.dataset.videoId;
if (videoId) {
window.location.href = 'video.php?id=' + videoId;
}
});
});
// Lazy loading des images
if ('IntersectionObserver' in window) {
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
const src = img.getAttribute('data-src');
if (src) {
img.src = src;
img.removeAttribute('data-src');
}
observer.unobserve(img);
}
});
});
document.querySelectorAll('img[data-src]').forEach(img => {
imageObserver.observe(img);
});
} else {
// Fallback pour les navigateurs qui ne supportent pas IntersectionObserver
document.querySelectorAll('img[data-src]').forEach(img => {
const src = img.getAttribute('data-src');
if (src) {
img.src = src;
img.removeAttribute('data-src');
}
});
}
2025-04-08 06:51:33 +04:00
// Gestion des boutons "Voir plus"
const viewMoreButtons = document.querySelectorAll('.view-more');
2025-04-08 06:37:14 +04:00
2025-04-08 06:51:33 +04:00
viewMoreButtons.forEach(button => {
button.addEventListener('click', function() {
// Dans un vrai projet, cela chargerait plus de contenu via AJAX
// Pour cet exemple, on simule juste un clic
button.innerText = 'Chargement...';
setTimeout(() => {
button.innerText = 'Voir plus';
}, 1000);
});
});
2025-04-08 06:37:14 +04:00
});