37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
function loadHTML(file, elementId, callback) {
|
|
fetch(file)
|
|
.then(r => r.text())
|
|
.then(html => {
|
|
document.getElementById(elementId).innerHTML = html;
|
|
if (callback) callback();
|
|
})
|
|
.catch(err => console.error('Error loading:', file, err));
|
|
}
|
|
|
|
function highlightActiveNav() {
|
|
const current = location.pathname.split('/').pop() || 'index.html';
|
|
document.querySelectorAll('#header a[href]').forEach(link => {
|
|
if (link.getAttribute('href') === `/${current}`) {
|
|
link.classList.add('active');
|
|
}
|
|
});
|
|
}
|
|
|
|
function startCarousel() {
|
|
const slides = document.querySelectorAll('#hero-carousel .carousel-slide');
|
|
if (!slides.length) return;
|
|
let current = 0;
|
|
slides[current].style.opacity = '1';
|
|
setInterval(() => {
|
|
slides[current].style.opacity = '0';
|
|
current = (current + 1) % slides.length;
|
|
slides[current].style.opacity = '1';
|
|
}, 5000);
|
|
}
|
|
|
|
loadHTML('/header.html', 'header', () => {
|
|
highlightActiveNav();
|
|
startCarousel();
|
|
});
|
|
loadHTML('/footer.html', 'footer');
|