Home > database >  Unabe to expand data-toggle dropdown to full width of screen
Unabe to expand data-toggle dropdown to full width of screen

Time:09-17

I'm trying to extend my navbar data-toggle dropdown to the full width of the screen. For some reason, it still leaves white space on the left side when I set the viewport width to 100. I'm using bootstrap and setting a media query in my CSS which I'll show below.

My navbar

<nav class="navbar navbar-expand-sm navbar-dark fixed-top bg-primary">
            <div class="container">
                <a class="navbar-brand text-white">Vince Clicks</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggler"
                    aria-controls="navbarToggler" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse bg-primary" id="navbarToggler">
                    <ul class="navbar-nav text-center mx-auto mb-2 mb-sm-0">
                        <li class="nav-item">
                            <a class="nav-link active" href="#home">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#about">About</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#skills">Skills</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#contact">Contact</a>
                        </li>
                    </ul>
                    <div class="d-none d-sm-flex">
                        <a class="btn btn-social-icon btn-linkedin" href="#"><i
                                class="fab fa-2x fa-github-square"></i></a>
                        <a class="btn btn-social-icon btn-linkedin" href="http://www.linkedin.com/in/"><i
                                class="fab fa-2x fa-linkedin"></i></a>
                    </div>
                </div>
            </div>
        </nav>
@media (max-width: 576px){
    .navbar-nav{
        margin-top: 11px;
        max-height: 158px;
        width: 100vw
    }

    .nav-link{
        border-top: 1px solid black;
    }

}

CodePudding user response:

The .container has left and right padding (x-axis), remove it by adding .px-0 and your example works. There is no need to set the width in your media query.

In the following snippet, in order to compensate for the lost padding
I have added margins to .navbar-brand and .navbar-toggler
with .ms-3 and .me-3, respectively:

@media (max-width: 576px) {
  .navbar-nav {
    margin-top: 11px;
    max-height: 158px;
  }
  .nav-link {
    border-top: 1px solid black;
  }
}
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">

<nav class="navbar navbar-expand-sm navbar-dark fixed-top bg-primary">
  <div class="container px-0">
    <a class="navbar-brand text-white ms-3">Vince Clicks</a>
    <button class="navbar-toggler me-3" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggler" aria-controls="navbarToggler" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse bg-primary" id="navbarToggler">
      <ul class="navbar-nav text-center mx-auto mb-2 mb-sm-0">
        <li class="nav-item">
          <a class="nav-link active" href="#home">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#about">About</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#skills">Skills</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#contact">Contact</a>
        </li>
      </ul>
      <div class="d-none d-sm-flex">
        <a class="btn btn-social-icon btn-linkedin" href="#"><i class="fab fa-2x fa-github-square"></i></a>
        <a class="btn btn-social-icon btn-linkedin" href="http://www.linkedin.com/in/"><i class="fab fa-2x fa-linkedin"></i></a>
      </div>
    </div>
  </div>
</nav>

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>

CodePudding user response:

You need to apply margin to the div class above your navbar-nav list. Try this.

@media (max-width: 576px){

    #navbarToggler{
        margin: 12px -20px 0px -20px;
    }

    .navbar-nav{
        max-height: 157px;
    }

    .nav-link{
        border-top: 1px solid black;
    }
}
  • Related