'how to change color of navbar when scrolling to bottom?

I have 2 probelems. Problem-1: I am trying changing navbar background color when scrolling to bottom. I am trying to add the class but it couldn't override the bootstrap !important attribute. but I have override it using this line:

nav.scrolled {
  background-color: #e8e4e1 !important;
  box-shadow: 2px 10px 4px var(--section-bg-light);
}

problem-2: how to change navbar background with javascript while scrolling to the bottom of the page, footer of the page?

let navbar = document.querySelector('.navbar');
let section = document.querySelectorAll('section');

section.addEventListener('mouseover', addIt);

function addIt() {
    navbar.classList.remove('bg-transparent');
    navbar.classList.add('bg-dark');
}
nav.bg-dark {
    background-color: #e8e4e1 !important;
}
<nav class="navbar navbar-expand-lg navbar-light bg-transparent fixed-top">
            <div class="container-fluid">
                <a class="navbar-brand" href="#"><img src="./img/logo-min.png" alt="JN-Fashion-Zone"></a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
                <div class="collapse navbar-collapse" id="navbarNav">
                    <ul class="navbar-nav">
                        <li class="nav-item home">
                            <a class="nav-link" aria-current="page" href="#">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">Products</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">Services</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">Contacts</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>


Solution 1:[1]

Please check out How to override !important? You need to use high specificity to override the !important rule. Try adding more levels to your selector.

Solution 2:[2]

var nav = document.querySelector('nav');
window.addEventListener('scroll', function () {
  if (window.pageYOffset > 100) {
    nav.classList.add('bg-info', 'shadow');
  } else {
    nav.classList.remove('bg-info', 'shadow');
  }
});

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sharath N B
Solution 2 alexpdev