jquery.hoverForMenu.js - Demo

Simple jQuery plugin for easy navigation through drop-down menus.

by Alexander Tartmin

HTML

<nav id="mainmenu">
  <ul>
    <li>
      <a href="#">Hover me</a>
      <ul class="dropdown">
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Hover me</a>
      <ul class="dropdown">
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Hover me</a>
      <ul class="dropdown">
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Hover me</a>
      <ul class="dropdown">
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Hover me</a>
      <ul class="dropdown">
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
        <li><a href="#">Drop-down link</a></li>
      </ul>
    </li>
  </ul>
</nav>

SCSS

nav#mainmenu {
  font-size: 1rem;
  width: 100%;
  background-color: rgba(#aeaeae, .2);
  
  > ul {
    display: flex;
    flex-direction: row;
    
    > li {
      padding: .5em;
      position: relative;
      
      > a {
        font-size: 1.05em;
        text-transform: uppercase;
      }
    }
  }
  
  a {
    color: blue;
    
    &:not(:hover) {
      text-decoration: none;
    }
  }
  
  ul ul {
    display: none;
  }
  
  .dropdown {
    min-width: 100%;
    background-color: rgba(#aeaeae, .4);
    display: none;
    position: absolute;
    top: 2rem;
    padding-bottom: 1rem;
    
    &.visible {
      display: block;
    }
    
    a {
      display: block;
      padding: 1rem 1rem 0;
      white-space: nowrap;
    }
  }
}

JavaScript

$(document).ready(function () {

  $('#mainmenu > ul > li').hoverForMenu({
    onMouseEnter: {
      t: 300,
      fn: function () {
        $(this).find('.dropdown').addClass('visible');
      }
    },
    onMouseLeave: {
      t: 300,
      fn: function () {
        $(this).find('.dropdown').removeClass('visible');
      }
    }
  });
  
});