Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Calculator

0

126
Views
Bootstrap 5 > change styling of the navbar when expanded on smaller devices

First time posting a question here so please be kind :)

I added the following script to change the css of my navbar when scrolling.

window.addEventListener("scroll", function () {
let header = document.querySelector(".navbar");
let windowPosition = window.scrollY > 0;
header.classList.toggle("change-bg-nav", windowPosition);});

This is the CSS for the class

.change-bg-nav {
box-shadow: var(--box-shadow);
background-color: rgb(255, 255, 255, 0.9) !important;
backdrop-filter: blur(5.5px);}

Effect works great, when I scroll on any device size the css of the navbar changes as expected. Now I'm looking to achieve the same effect when I'm on a smaller device and click on the hamburger icon to expand the menu ** but without having scrolled**. I've tried mediaqueries but that doesn't give me the desired result. Any suggestions for how to approach this?

The code for my nav

<nav class="navbar navbar-expand-lg navbar-light bg-light px-3 mb-5">
    <div class="container-fluid">
    <a class="navbar-brand" href="/">Brand name</a>
                <button
                    class="navbar-toggler"
                    type="button"
                    data-bs-toggle="collapse"
                    data-bs-target="#navbarNavAltMarkup"
                    aria-controls="navbarNavAltMarkup"
                    aria-expanded="false"
                    aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
                    <div class="navbar-nav ms-auto">
                        <a class="nav-link active" aria-current="page" href="/">Home</a>
                        <a class="nav-link" href="/about.html">About</a>
                        <a class="nav-link" href="/about.html#contact-me">Contact</a>
                    </div>
                    <div class="navbar-nav social-media">
                        <a href="#" target="_blank" class="nav-link social"><i class="fab fa-twitter px-1"></i></a>
                        <a href="#" target="_blank" class="nav-link social"><i class="fab fa-linkedin-in px-1"></i
                        ></a>
                    </div>
                </div>
            </div>
        </nav>
7 months ago · Juan Pablo Isaza
2 answers
Answer question

0

Hook into the Navbar Collapse events to toggle the change-bg-nav class...

let header = document.querySelector(".navbar");
header.addEventListener('show.bs.collapse', function () {
     header.classList.toggle("change-bg-nav");
})
header.addEventListener('hide.bs.collapse', function () {
     header.classList.toggle("change-bg-nav");
})

https://codeply.com/p/7AXPT20HSL

7 months ago · Juan Pablo Isaza Report

0

For mobile devices, I think you should use another strategy. ie.

if(hamburger.clicked) {
// add bg navber color.
}
7 months ago · Juan Pablo Isaza Report
Answer question
Find remote jobs