У меня в данный момент пункты навигационного меню подсвечиваются при каждом нажатии на них, но я хочу, чтобы весь раздел в HTML имел выделенный фон, поэтому, когда пользователь прокручивает веб-сайт, он автоматически выделяет навигационное меню. пункт в соответствии с тем, какой раздел они пролистывают
Вот пример кода, который я пытаюсь достичь с помощью своего кода https://codepen.io/joxmar/pen/NqqMEg
Вот мой текущая целевая страница в Jsfiddle https://jsfiddle.net/hzg02k3n/
Как видно из моего jsfiddle, ссылки выделяются при нажатии, но мне нужно, чтобы они активировались при прокрутке раздела.
Ниже моего текущего HTML кода
<header class="page__header">
<nav class="navbar__menu">
<!-- Navigation starts as empty UL that will be populated with JS -->
<ul id="navbar__list"></ul>
</nav>
</header>
<main>
<header class="main__hero">
<h1>Landing Page</h1>
</header>
<section id="section1" data-nav="Section 1" class="active">
<div class="landing__container">
<h2>Section 1</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi
fermentum metus faucibus lectus pharetra dapibus. Suspendisse
potenti. Aenean aliquam elementum mi, ac euismod augue. Donec eget
lacinia ex. Phasellus imperdiet porta orci eget mollis. Sed
convallis sollicit
</p>
<p>
Aliquam a convallis justo. Vivamus venenatis, erat eget pulvinar
gravida, ipsum l
</p>
</div>
</section>
<section id="section2" data-nav="Section 2">
<div class="landing__container">
<h2>Section 2</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi
fermentum metus faucibus lectus pharetra dapibus. Suspendisse
potenti. Aenean aliquam elementum mi, ac euismod augue. Donec eget
lacinia ex. Phasellus imperdiet porta orci eget mollis. Sed
convallis s
</p>
<p>
Aliquam a convallis justo. Vivamus venenatis, erat eget pulvinar
gravida, ipsum l
</p>
</div>
</section>
У меня до 4 разделов, но это только первые два.
Вот мой Javascript, который Я использовал для создания навигационной панели
const navMenu = document.querySelectorAll("section");
const navList = document.getElementById("navbar__list");
const items = ["Section 1", "Section 2", "Section 3", "Section 4"];
//Build the nav
items.forEach((item, i) => {
const el = document.createElement("a");
el.innerText = item;
el.classList.add("menu-items");
el.setAttribute("id", `menu-${i + 1}`);
el.href = `#section${i + 1}`;
navList.appendChild(el);
const li = document.createElement("li");
li.classList.add("menu-list");
li.appendChild(el);
li.setAttribute("id", `${i + 1}`);
// Append the list item to the list
navList.appendChild(li);
});
//Make Nav Active when Clicked and scrolls down to section
document.addEventListener("click", function (event) {
let active = document.querySelector(".menu-list.active");
if (active) active.classList.remove("active");
if (event.target.classList.contains("menu-list")) {
event.target.classList.add("active");
window.location.href = "#section" + event.target.id;
}
});