Navigation Bar in HTML CSS & JavaScript | Dark/Light Mode | Search Bar
  • index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- ===== CSS ===== -->
        <link rel="stylesheet" href="style.css">
        <!-- ===== Boxicons CSS ===== -->
        <link href='https://unpkg.com/boxicons@2.1.1/css/boxicons.min.css' rel='stylesheet'>
        <title>Responsive Navigation Menu Bar</title>
    </head>
    <body>
        <nav>
            <div class="nav-bar">
                <i class='bx bx-menu sidebarOpen' ></i>
                <span class="logo navLogo"><a href="#">Atechseva</a></span>
    
                <div class="menu">
                    <div class="logo-toggle">
                        <span class="logo"><a href="#">Atechseva</a></span>
                        <i class='bx bx-x siderbarClose'></i>
                    </div>
    
                    <ul class="nav-links">
                        <li><a href="#">Home</a></li>
                        <li><a href="#">About</a></li>
                        <li><a href="#">Portfolio</a></li>
                        <li><a href="#">Services</a></li>
                        <li><a href="#">Contact</a></li>
                    </ul>
                </div>
    
                <div class="darkLight-searchBox">
                    <div class="dark-light">
                        <i class='bx bx-moon moon'></i>
                        <i class='bx bx-sun sun'></i>
                    </div>
    
                    <div class="searchBox">
                       <div class="searchToggle">
                        <i class='bx bx-x cancel'></i>
                        <i class='bx bx-search search'></i>
                       </div>
    
                        <div class="search-field">
                            <input type="text" placeholder="Search...">
                            <i class='bx bx-search'></i>
                        </div>
                    </div>
                </div>
            </div>
        </nav>
    
        <script src="script.js"></script>
    
    </body>
    </html>

    style.css

     @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap');* {margin: 0;padding: 0;box-sizing: border-box;font-family: 'Poppins', sans-serif;transition: all 0.4s ease;;}:root {--body-color: #E4E9F7;--nav-color: #3142ae;--side-nav: #010718;--text-color: #FFF;--search-bar: #F2F2F2;--search-text: #010718;}body {height: 100vh;background-color: var(--body-color);}body.dark {--body-color: #18191A;--nav-color: #242526;--side-nav: #242526;--text-color: #CCC;--search-bar: #242526;}nav {position: fixed;top: 0;left: 0;height: 70px;width: 100%;background-color: var(--nav-color);z-index: 100;}body.dark nav {border: 1px solid #393838;}nav .nav-bar {position: relative;height: 100%;max-width: 1000px;width: 100%;background-color: var(--nav-color);margin: 0 auto;padding: 0 30px;display: flex;align-items: center;justify-content: space-between;}nav .nav-bar .sidebarOpen {color: var(--text-color);font-size: 25px;padding: 5px;cursor: pointer;display: none;}nav .nav-bar .logo a {font-size: 25px;font-weight: 500;color: var(--text-color);text-decoration: none;}.menu .logo-toggle {display: none;}.nav-bar .nav-links {display: flex;align-items: center;}.nav-bar .nav-links li {margin: 0 5px;list-style: none;}.nav-links li a {position: relative;font-size: 17px;font-weight: 400;color: var(--text-color);text-decoration: none;padding: 10px;}.nav-links li a::before {content: '';position: absolute;left: 50%;bottom: 0;transform: translateX(-50%);height: 6px;width: 6px;border-radius: 50%;background-color: var(--text-color);opacity: 0;transition: all 0.3s ease;}.nav-links li:hover a::before {opacity: 1;}.nav-bar .darkLight-searchBox {display: flex;align-items: center;}.darkLight-searchBox .dark-light, .darkLight-searchBox .searchToggle {height: 40px;width: 40px;display: flex;align-items: center;justify-content: center;margin: 0 5px;}.dark-light i, .searchToggle i {position: absolute;color: var(--text-color);font-size: 22px;cursor: pointer;transition: all 0.3s ease;}.dark-light i.sun {opacity: 0;pointer-events: none;}.dark-light.active i.sun {opacity: 1;pointer-events: auto;}.dark-light.active i.moon {opacity: 0;pointer-events: none;}.searchToggle i.cancel {opacity: 0;pointer-events: none;}.searchToggle.active i.cancel {opacity: 1;pointer-events: auto;}.searchToggle.active i.search {opacity: 0;pointer-events: none;}.searchBox {position: relative;}.searchBox .search-field {position: absolute;bottom: -85px;right: 5px;height: 50px;width: 300px;display: flex;align-items: center;background-color: var(--nav-color);padding: 3px;border-radius: 6px;box-shadow: 0 5px 5px rgba(0, 0, 0, 0.1);opacity: 0;pointer-events: none;transition: all 0.3s ease;}.searchToggle.active~.search-field {bottom: -74px;opacity: 1;pointer-events: auto;}.search-field::before {content: '';position: absolute;right: 14px;top: -4px;height: 12px;width: 12px;background-color: var(--nav-color);transform: rotate(-45deg);z-index: -1;}.search-field input {height: 100%;width: 100%;padding: 0 45px 0 15px;outline: none;border: none;border-radius: 4px;font-size: 14px;font-weight: 400;color: var(--search-text);background-color: var(--search-bar);}body.dark .search-field input {color: var(--text-color);}.search-field i {position: absolute;color: var(--nav-color);right: 15px;font-size: 22px;cursor: pointer;}body.dark .search-field i {color: var(--text-color);}@media (max-width: 790px) {nav .nav-bar .sidebarOpen {display: block;}.menu {position: fixed;height: 100%;width: 320px;left: -100%;top: 0;padding: 20px;background-color: var(--side-nav);z-index: 100;transition: all 0.4s ease;}nav.active .menu {left: -0%;}nav.active .nav-bar .navLogo a {opacity: 0;transition: all 0.3s ease;}.menu .logo-toggle {display: block;width: 100%;display: flex;align-items: center;justify-content: space-between;}.logo-toggle .siderbarClose {color: var(--text-color);font-size: 24px;cursor: pointer;}.nav-bar .nav-links {flex-direction: column;padding-top: 30px;}.nav-links li a {display: block;margin-top: 20px;}}

    script.js

    const body = document.querySelector("body"),
      nav = document.querySelector("nav"),
      modeToggle = document.querySelector(".dark-light"),
      searchToggle = document.querySelector(".searchToggle"),
      sidebarOpen = document.querySelector(".sidebarOpen"),
      siderbarClose = document.querySelector(".siderbarClose");
    
    let getMode = localStorage.getItem("mode");
    if (getMode && getMode === "dark-mode") {
      body.classList.add("dark");
    }
    
    // js code to toggle dark and light mode
    modeToggle.addEventListener("click", () => {
      modeToggle.classList.toggle("active");
      body.classList.toggle("dark");
    
      // js code to keep user selected mode even page refresh or file reopen
      if (!body.classList.contains("dark")) {
        localStorage.setItem("mode", "light-mode");
      } else {
        localStorage.setItem("mode", "dark-mode");
      }
    });
    
    // js code to toggle search box
    searchToggle.addEventListener("click", () => {
      searchToggle.classList.toggle("active");
    });
    
    
    //   js code to toggle sidebar
    sidebarOpen.addEventListener("click", () => {
      nav.classList.add("active");
    });
    
    body.addEventListener("click", e => {
      let clickedElm = e.target;
    
      if (!clickedElm.classList.contains("sidebarOpen") && !clickedElm.classList.contains("menu")) {
        nav.classList.remove("active");
      }
    });
    Download
    -1