bootstrap 5 navbar element

Viewed 35

I used bootstrap to form my of canvas navbar that expands when large size is reached, however, I need my navbar elements to be centered when the elements are expanded. How should I do that?. here is my code so far. I tried to use justify-content-center and using grid system but nothing of these worked with me

body {
  font-family: 'Lexend Deca', sans-serif;
  background-color: white;
}

input:hover,
input:focus {
  outline: 0px !important;
  -webkit-appearance: none;
  box-shadow: none !important;
  border-color: rgb(206, 212, 218) !important;
}

#first_btn {
  border-color: rgb(206, 212, 218);
  color: #000000;
}

#first_btn:hover {
  background-color: #000000;
  color: rgb(206, 212, 218);
}
<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Gym</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
  <link rel="stylesheet" href="app.css">
  <!-- fonts -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@400;500;600&display=swap" rel="stylesheet">
</head>

<body>
  <nav class="navbar bg-light fixed-top navbar-expand-lg ">
    <div class="container-fluid">
      <a class="navbar-brand" href="#">FitFat Studio</a>
      <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar">
                <span class="navbar-toggler-icon"></span>
            </button>
      <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
        <div class="offcanvas-header">
          <h5 class="offcanvas-title" id="offcanvasNavbarLabel">FitFat Studio</h5>
          <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
        </div>
        <div class="offcanvas-body">
          <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
            <li class="nav-item">
              <a class="nav-link" aria-current="page" href="#">Home</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" aria-current="page" href="#">Notifications <span
                                    class="badge text-bg-dark">5</span>
                            </a>

            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">work with us</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">contact us</a>
            </li>
          </ul>
          <form id="first-form" class="d-flex" role="search">
            <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
            <button id="first_btn" class="btn btn-outline-success" type="submit">Search</button>
          </form>
        </div>
      </div>
    </div>
  </nav>



  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>
</body>

</html>

2 Answers

A quick solution could be adding justify-content-center class to the offcanvas-body element and also you should remove flex-grow-1 from ul.navbar-nav for the justify-content-center class to take effect.

Here's a demo with the changes in place (use Full Page option on top right of the snippet to actually see the changes):

body {
  font-family: 'Lexend Deca', sans-serif;
  background-color: white;
}

input:hover,
input:focus {
  outline: 0px !important;
  -webkit-appearance: none;
  box-shadow: none !important;
  border-color: rgb(206, 212, 218) !important;
}

#first_btn {
  border-color: rgb(206, 212, 218);
  color: #000000;
}

#first_btn:hover {
  background-color: #000000;
  color: rgb(206, 212, 218);
}
<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Gym</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
  <link rel="stylesheet" href="app.css">
  <!-- fonts -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@400;500;600&display=swap" rel="stylesheet">
</head>

<body>
  <nav class="navbar bg-light fixed-top navbar-expand-lg ">
    <div class="container-fluid">
      <a class="navbar-brand" href="#">FitFat Studio</a>
      <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar">
                <span class="navbar-toggler-icon"></span>
            </button>
      <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
        <div class="offcanvas-header">
          <h5 class="offcanvas-title" id="offcanvasNavbarLabel">FitFat Studio</h5>
          <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
        </div>
        <!-- add "justify-content-center" here -->
        <div class="offcanvas-body justify-content-center">
          <!-- remove flex-grow-1 for the above class to take effect -->
          <ul class="navbar-nav pe-3">
            <li class="nav-item">
              <a class="nav-link" aria-current="page" href="#">Home</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" aria-current="page" href="#">Notifications <span
                                    class="badge text-bg-dark">5</span>
                            </a>

            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">work with us</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">contact us</a>
            </li>
          </ul>
          <form id="first-form" class="d-flex" role="search">
            <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
            <button id="first_btn" class="btn btn-outline-success" type="submit">Search</button>
          </form>
        </div>
      </div>
    </div>
  </nav>



  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>
</body>

</html>

According to your code just replace "justify-content-end" with "justify-content-center"

   <ul class="navbar-nav justify-content-center flex-grow-1 pe-3">
Related