Как показать меню dropdown в Bootstrap 4 при наведении мыши?

Время чтения: 4 минуты
0 177

Сегодня мы разберем такой вопрос: Как показать меню dropdown в Bootstrap 4 при наведении мыши?

Возмьмем стандартный код Navbar из документации Bootstrap:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

Далее воспользуемся jQuery и напишем обработку наведения мыши на пункт меню Dropdown:


$(document).ready(function () {
    var _mwi = 991;//ширина до которой показывается мобильное меню т.к. в nav есть класс navbar-expand-lg
    function toggleDropdown (e) {
      //минимальная ширина окна 991px - при этом условии будет открываться меню при наведении мыши 
      if(window.innerWidth > _mwi) {
          var _d = $(e.target);
          setTimeout(function () {
            var shouldOpen = e.type !== 'click' && _d.is(':hover');
            _d.parents('.nav-item.dropdown').find('.dropdown-menu').toggleClass('show', shouldOpen);
            _d.parents('.nav-item.dropdown').toggleClass('show', shouldOpen);
            $(e.target).attr('aria-expanded', shouldOpen);
          }, e.type === 'mouseleave' ? 300 : 0);
       }
    }
    
    $(document)
        .on('mouseenter','.nav-item.dropdown',toggleDropdown)
        .on('mouseleave','.nav-item.dropdown.show',toggleDropdown);
});

Открыть пример на CodePen

« Все статьи

Комментарии 0 комментариев
Только авторизованные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Что еще посмотреть?