Bootstrap 5 - Навбар - Логотип/брендовый текст слева - Меню по центру - Поиск справа

Я пытаюсь сделать Navbar в Bootstrap 5. Я бы хотел, чтобы логотип (в моем случае это просто причудливый текст) располагался слева. Затем я бы хотел, чтобы меню было по центру, а поле поиска - справа. Проблема, с которой я столкнулся, заключается в том, что когда мне удается выстроить их таким образом, меню располагается в центре div'ов поиска и логотипа, что из-за размера логотипа и т.д. не всегда соответствует середине экрана, как я хочу. Я занимаюсь этим уже несколько дней, пробуя разные варианты, но никак не могу добиться нужного результата. Я также хочу, чтобы мобильное меню сворачивалось и включало поиск. В мобильном меню логотип должен быть выровнен по центру, а кнопка сворачивания - чуть ниже, также по центру.

Последний код, который я пробовал, следующий:

index.html:

Шаблонизация - это просто потому, что я делаю это с Django.

main.css:

@font-face {
    font-family: 'vi-my-ha-hoa';
    src: url('../fonts/vi-my-ha-hoa.ttf') format("truetype");
}

.navbar-brand {
    font-family: 'vi-my-ha-hoa';
    font-size: 3rem;
    word-spacing: 0.4rem;
}

.carousel-image {
    height: 400px;
    object-fit: cover !important;
}

.carousel-item>div {
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.navbar-dark {
    --bs-navbar-color: #ffffff;
    --bs-navbar-hover-color: #ffffff;
    --bs-navbar-active-color: #fff;
}

Я не нашел удовлетворительного простого способа сделать навигационную панель действительно центрированной. Хотелось бы, чтобы bootstrap предоставлял способ по умолчанию. Ниже приведен подход, который работает, определяя выровненные слева и справа элементы классом "col" (flex-basis grow) и оставляя центр в покое, основываясь на ответе, данном в Keep the middle item centered when side items have different width. Однако бренд navbar сворачивается вместе со всем остальным. (см. реализацию codepen: https://codepen.io/sam-miller-the-flexboxer/pen/bGLmXzz). О других, возможно более гибких, подходах, включая использование абсолютного позиционирования по центру, смотрите https://codepen.io/yesiamrocks/pen/MVOWXZ. В примерах используется Bootstrap 4, поэтому вам, возможно, придется обновить названия некоторых классов до Bootstrap 5. Например, mr-auto (margin right) и ml-auto (margin left) нужно изменить на me-auto (margin end) и ms-auto (margin start)

  <nav class="navbar navbar-expand-sm bg-light">
     <div class="container-xxl">
      <button class="navbar-toggler ms-auto" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerflex-1" aria-controls="navbarTogglerflex-1" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse align-items-baseline" id="navbarTogglerflex-1">
        <div class="col">
          <a class="navbar-brand" href="#">
            <i class="bi bi-bootstrap-fill h2 align-middle"></i>
            Bootstrap
          </a>
        </div>
        <ul class="navbar-nav mb-2 mb-sm-0">
          <li class="nav-item">
            <a class="nav-link active" aria-current="page" href="#">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled">Disabled</a>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              Dropdown link
            </a>
            <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
              <li><a class="dropdown-item" href="#">Action</a></li>
              <li><a class="dropdown-item" href="#">Another action</a></li>
              <li><a class="dropdown-item" href="#">Something else here</a></li>
            </ul>
          </li>
        </ul>
        <div class="col">
          <form class="ms-sm-auto w-75 " role="search">
            <div class="input-group input-group-sm mb-3 flex-nowrap">
              <input type="text" class="form-control" placeholder="Search">
              <button type="button" class="btn btn-secondary">
                <i class="bi bi-search"></i>
                <span class="visually-hidden">Search</span>
              </button>
            </div>
          </form>
        </div>
      </div>
    </div>
  </nav>
Вернуться на верх