All Tutorials

Your One-Stop Destination for Learning and Growth

Creating a Horizontally Responsive Menu with Overflow List as Dropdown

In web development, creating an effective and visually appealing menu is essential for enhancing user experience. In this tutorial, we'll walk you through the process of building a horizontally responsive menu with an overflow list acting as dropdown. Let's get started!

Prerequisites

Before diving into the steps, ensure that:

  1. You have basic HTML, CSS, and JavaScript knowledge.
  2. You are using a modern web browser for testing purposes.
  3. You have an understanding of Flexbox or Grid layout for creating responsive menus.

Step 1: HTML Markup

First, let's create the basic HTML structure for our menu. We will use an ul list with class menu and li items representing each menu item. Additionally, we will include a container with class menu-container.

<div class="menu-container">
  <ul class="menu">
    <li><a href="#link1">Link 1</a></li>
    <li><a href="#link2">Link 2</a></li>
    <!-- Add more menu items here -->
    <li class="menu-item-dropdown"><a href="#" class="dropdown-toggle">Dropdown <i class="fa fa-caret-down"></i></a>
      <ul class="dropdown">
        <li><a href="#link3">Link 3.1</a></li>
        <li><a href="#link4">Link 3.2</a></li>
        <!-- Add more links under the dropdown here -->
      </ul>
    </li>
  </ul>
</div>

Step 2: CSS Styling

Next, let's style our menu using CSS. We will make it horizontally responsive and create the dropdown effect when hovering over the "Dropdown" item.

.menu-container {
  width: 100%; /* Set container width */
}

.menu {
  list-style: none;
  display: flex;
  justify-content: space-between; /* Space out menu items */
  background-color: #333;
  padding: 0;
  overflow: hidden; /* Hide menu items that exceed the container */
}

.menu li {
  flex: 1; /* Distribute available space equally among menu items */
}

.menu a {
  color: #fff;
  text-decoration: none;
  padding: 0 1rem;
  transition: background-color 0.2s ease;
}

.menu li:hover > a, .menu li.menu-item-dropdown:focus > a {
  background-color: #4CAF50;
}

.menu-item-dropdown:hover > ul.dropdown {
  display: flex;
  flex-direction: column;
  align-items: center;
  list-style: none;
  padding: 0;
  position: absolute;
  background-color: #333;
  width: 100%;
}

.menu-item-dropdown > ul.dropdown li > a {
  width: 100%; /* Make dropdown links take up full width */
  text-align: center;
}

Step 3: JavaScript (Optional)

To enhance the user experience, we can add some JavaScript to close the dropdown when clicking outside of it. This is an optional step and can be accomplished with simple CSS modifications or a more complex solution using libraries such as jQuery.

document.addEventListener('click', function(event) {
  const dropdown = document.querySelector('.menu-container ul.dropdown');
  if (!dropdown.contains(event.target) && event.target !== event.currentTarget) {
    dropdown.style.display = 'none';
  }
});

Conclusion

In this tutorial, we learned how to create a horizontally responsive menu with an overflow list acting as a dropdown using HTML, CSS, and (optionally) JavaScript. This simple yet effective design can help improve user experience by making your website more accessible on various devices and screen sizes. Happy coding!

Published July, 2017