Введение

При разработке современных веб-интерфейсов на Bootstrap 5 часто требуется реализовать пользовательский блок в навигации, который на десктопных устройствах отображает имя пользователя, аватар и выпадающее меню, а на мобильных устройствах — только аватар с выпадающим меню.

В этой статье я покажу оптимальный способ реализации такой задачи с использованием встроенных адаптивных утилит Bootstrap 5.


Готовое решение

Измените ширину окна браузера, чтобы увидеть, как имя скрывается на мобильных устройствах

HTML-код

<nav class="navbar navbar-expand-lg bg-body-tertiary">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Мой проект</a>

    <div class="ms-auto d-flex align-items-center">
      <div class="dropdown">
        <a href="#" class="d-flex align-items-center link-dark text-decoration-none dropdown-toggle" id="userDropdown" data-bs-toggle="dropdown" aria-expanded="false">
          <span class="d-none d-lg-inline me-2 fw-semibold">Алексей Иванов</span>
          <img src="avatar.jpg" alt="Аватар" width="36" height="36" class="rounded-circle border">
        </a>

        <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
          <li><a class="dropdown-item" href="#">Профиль</a></li>
          <li><a class="dropdown-item" href="#">Настройки</a></li>
          <li><hr class="dropdown-divider"></li>
          <li><a class="dropdown-item" href="#">Выйти</a></li>
        </ul>
      </div>
    </div>
  </div>
</nav>

Как это работает

1. Единый компонент выпадающего списка

Вся конструкция построена вокруг одного <div class="dropdown">. Это обеспечивает единое поведение и упрощает поддержку кода.

2. Адаптивное отображение имени

Ключевая хитрость заключается в использовании классов Bootstrap для адаптивности:

  • d-none — скрывает элемент на всех экранах;
  • d-lg-inline — показывает элемент как инлайн на экранах шире 992px (размер lg).

Комбинация d-none d-lg-inline означает, что элемент будет скрыт на мобильных устройствах и виден только на десктопах.

3. Аватар всегда на виду

Изображение аватара не имеет адаптивных классов и поэтому отображается на всех размерах экрана.

4. Единое выпадающее меню

Меню действий одно для всех устройств. При необходимости на мобильных можно добавить имя пользователя внутри меню.


Преимущества подхода

  • Минимальное дублирование кода — вся логика собрана в одном месте;
  • Простота поддержки — изменения вносятся один раз;
  • Использование стандартных классов Bootstrap — не требуется дополнительных CSS-правил;
  • Единообразное поведение — выпадающее меню работает одинаково на всех устройствах.

Дополнительные рекомендации

Отображение имени внутри мобильного меню

Чтобы на мобильных устройствах пользователь видел своё имя внутри выпадающего меню, добавьте следующий код в <ul>:

<li><span class="dropdown-item-text fw-semibold">Алексей Иванов</span></li>
<li><hr class="dropdown-divider"></li>

Интеграция с WordPress

Для использования в теме WordPress замените статические данные на динамические:

<?php
$current_user = wp_get_current_user();
$user_name = $current_user->display_name;
$avatar_url = get_avatar_url($current_user->ID, ['size' => 36]);
?>

Заключение

Представленный подход демонстрирует силу адаптивных утилит Bootstrap 5. Используя всего один компонент и пару классов, можно создать гибкий интерфейс, который корректно отображается на всех типах устройств.

Этот метод не только экономит время разработки, но и делает код более чистым и поддерживаемым.


Полезные ссылки:
Документация Bootstrap 5 — Dropdowns
Утилиты отображения Bootstrap