first commit
This commit is contained in:
75
script.js
Normal file
75
script.js
Normal file
@@ -0,0 +1,75 @@
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const splash = document.getElementById('splash');
|
||||
const burgerBtn = document.getElementById('burger-btn');
|
||||
const mainNav = document.getElementById('main-nav');
|
||||
const links = document.querySelectorAll('[data-target]');
|
||||
const sections = document.querySelectorAll('.page-section');
|
||||
|
||||
const introText = document.getElementById('dynamic-text');
|
||||
const textToType = "Portfolio | Alice THIERRY";
|
||||
let charIndex = 0;
|
||||
|
||||
function typeWriter() {
|
||||
if (charIndex < textToType.length) {
|
||||
introText.textContent += textToType.charAt(charIndex);
|
||||
charIndex++;
|
||||
setTimeout(typeWriter, 80);
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
splash.style.opacity = '0';
|
||||
setTimeout(() => {
|
||||
splash.style.display = 'none';
|
||||
}, 800);
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(typeWriter, 500);
|
||||
|
||||
burgerBtn.addEventListener('click', toggleMenu);
|
||||
|
||||
function toggleMenu() {
|
||||
mainNav.classList.toggle('open');
|
||||
|
||||
const spans = burgerBtn.querySelectorAll('span');
|
||||
|
||||
if (mainNav.classList.contains('open')) {
|
||||
spans[0].style.transform = 'rotate(45deg) translate(5px, 6px)';
|
||||
spans[1].style.opacity = '0';
|
||||
spans[2].style.transform = 'rotate(-45deg) translate(5px, -6px)';
|
||||
} else {
|
||||
spans[0].style.transform = 'none';
|
||||
spans[1].style.opacity = '1';
|
||||
spans[2].style.transform = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
links.forEach(link => {
|
||||
link.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
const targetId = link.getAttribute('data-target');
|
||||
navigateTo(targetId);
|
||||
});
|
||||
});
|
||||
|
||||
function navigateTo(targetId) {
|
||||
const targetSection = document.getElementById(targetId);
|
||||
if(!targetSection) return;
|
||||
if(mainNav.classList.contains('open')) {
|
||||
toggleMenu();
|
||||
}
|
||||
|
||||
const currentSection = document.querySelector('.page-section.active');
|
||||
|
||||
if(currentSection && currentSection.id === targetId) return;
|
||||
if (currentSection) {
|
||||
currentSection.classList.remove('active');
|
||||
setTimeout(() => {
|
||||
targetSection.classList.add('active');
|
||||
window.scrollTo(0, 0);
|
||||
}, 500);
|
||||
} else {
|
||||
targetSection.classList.add('active');
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user