Skip to content

Commit 703c71f

Browse files
committed
fixed nav scroll in mob header
1 parent 0e800de commit 703c71f

File tree

1 file changed

+65
-76
lines changed

1 file changed

+65
-76
lines changed

src/js/header.js

Lines changed: 65 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,68 @@
1-
document.addEventListener("DOMContentLoaded", function () {
2-
const menuBtn = document.querySelector(".menu-btn");
3-
const navMenu = document.querySelector(".nav-header-ul");
4-
const navLinks = document.querySelectorAll(".nav-header-ul a");
5-
const burgerBtn = document.querySelector(".open-modal");
6-
const closeBtn = document.querySelector(".close-menu");
7-
const mobileMenu = document.querySelector(".mobile-burger-menu");
8-
9-
if (!menuBtn || !navMenu || navLinks.length === 0 || !burgerBtn || !closeBtn || !mobileMenu) return;
10-
11-
12-
function toggleMenu() {
13-
navMenu.classList.toggle("active");
14-
if (navMenu.classList.contains("active")) {
15-
navMenu.style.opacity = "1";
16-
navMenu.style.transform = "translateY(0)";
17-
navMenu.style.visibility = "visible";
18-
} else {
19-
navMenu.style.opacity = "0";
20-
navMenu.style.transform = "translateY(-10px)";
21-
navMenu.style.visibility = "hidden";
22-
}
23-
}
24-
25-
26-
function openMobileMenu() {
27-
mobileMenu.style.visibility = "visible";
28-
mobileMenu.style.opacity = "1";
29-
mobileMenu.style.transform = "scale(1)";
30-
mobileMenu.style.transition = "transform 0.5s ease-out, opacity 0.5s ease-out";
31-
document.body.classList.add("no-scroll");
32-
}
33-
34-
35-
function closeMobileMenu() {
36-
mobileMenu.style.opacity = "0";
37-
mobileMenu.style.transform = "scale(0.8)";
38-
setTimeout(() => {
39-
mobileMenu.style.visibility = "hidden";
40-
}, 500);
41-
document.body.classList.remove("no-scroll");
42-
}
43-
44-
45-
menuBtn.addEventListener("click", toggleMenu);
46-
47-
48-
burgerBtn.addEventListener("click", openMobileMenu);
49-
50-
51-
closeBtn.addEventListener("click", closeMobileMenu);
52-
53-
54-
navLinks.forEach(link => {
55-
link.addEventListener("click", function (e) {
56-
e.preventDefault();
57-
const targetId = this.getAttribute("href").substring(1);
58-
const targetSection = document.getElementById(targetId);
59-
60-
if (targetSection) {
61-
window.scrollTo({
62-
top: targetSection.offsetTop - 50,
63-
behavior: "smooth"
64-
});
65-
}
66-
67-
document.body.classList.remove("no-scroll");
68-
69-
navMenu.classList.remove("active");
70-
navMenu.style.opacity = "0";
71-
navMenu.style.transform = "translateY(-10px)";
72-
navMenu.style.visibility = "hidden";
73-
closeMobileMenu();
1+
document.addEventListener('DOMContentLoaded', function () {
2+
const menuBtn = document.querySelector('.menu-btn');
3+
const navMenu = document.querySelector('.nav-header-ul');
4+
const navLinks = document.querySelectorAll('.nav-header-ul-mob a');
5+
const burgerBtn = document.querySelector('.open-modal');
6+
const closeBtn = document.querySelector('.close-menu');
7+
const mobileMenu = document.querySelector('.mobile-burger-menu');
8+
9+
if (
10+
!menuBtn ||
11+
!navMenu ||
12+
navLinks.length === 0 ||
13+
!burgerBtn ||
14+
!closeBtn ||
15+
!mobileMenu
16+
)
17+
return;
18+
19+
function toggleMenu() {
20+
navMenu.classList.toggle('active');
21+
navMenu.style.opacity = navMenu.classList.contains('active') ? '1' : '0';
22+
navMenu.style.transform = navMenu.classList.contains('active')
23+
? 'translateY(0)'
24+
: 'translateY(-10px)';
25+
navMenu.style.visibility = navMenu.classList.contains('active')
26+
? 'visible'
27+
: 'hidden';
28+
}
29+
30+
function openMobileMenu() {
31+
mobileMenu.style.visibility = 'visible';
32+
mobileMenu.style.opacity = '1';
33+
mobileMenu.style.transform = 'scale(1)';
34+
mobileMenu.style.transition =
35+
'transform 0.5s ease-out, opacity 0.5s ease-out';
36+
document.body.classList.add('no-scroll');
37+
}
38+
39+
function closeMobileMenu() {
40+
mobileMenu.style.opacity = '0';
41+
mobileMenu.style.transform = 'scale(0.8)';
42+
setTimeout(() => {
43+
mobileMenu.style.visibility = 'hidden';
44+
}, 500);
45+
document.body.classList.remove('no-scroll');
46+
}
47+
48+
menuBtn.addEventListener('click', toggleMenu);
49+
burgerBtn.addEventListener('click', openMobileMenu);
50+
closeBtn.addEventListener('click', closeMobileMenu);
51+
52+
navLinks.forEach(link => {
53+
link.addEventListener('click', function (e) {
54+
e.preventDefault();
55+
const targetId = this.getAttribute('href').substring(1);
56+
const targetSection = document.getElementById(targetId);
57+
58+
if (targetSection) {
59+
window.scrollTo({
60+
top: targetSection.offsetTop - 50,
61+
behavior: 'smooth',
7462
});
63+
}
64+
65+
closeMobileMenu();
7566
});
67+
});
7668
});
77-
78-
79-

0 commit comments

Comments
 (0)