Learn How to Create a Top Navigation Menu for Smartphones/Tablets with CSS and JavaScript

In today’s digital age, ensuring a seamless user experience on both desktop and mobile devices is paramount for website owners and developers. With the increasing number of users accessing websites from smartphones and tablets, having a responsive design that adapts to different screen sizes is crucial. One essential element of a responsive website is a well-designed top navigation menu. In this article, we’ll walk you through the process of creating an elegant and functional top navigation menu for smartphones and tablets using CSS and JavaScript, complete with code snippets for a clearer understanding.

1. Introduction

In this digital era, a significant portion of website traffic comes from mobile devices, making it essential to create a user-friendly navigation system that caters to various screen sizes. By combining CSS and JavaScript, we can achieve an attractive and functional top navigation menu that enhances the overall user experience.

2. Understanding the Importance of Responsive Navigation

Responsive navigation involves designing a website’s navigation system to adapt seamlessly to different screen sizes. By implementing responsive navigation, users can access crucial content on your website regardless of the device they use, resulting in a more satisfying user experience.

3. Planning the Top Navigation Menu

Before delving into coding, it’s crucial to plan the structure and design of our top navigation menu. Decide on the menu items, their order, and how they should appear on different screen sizes to ensure a smooth user experience.

4. Structuring the HTML Markup

Let’s begin by creating a simple HTML structure for our top navigation menu. The menu’s foundation will consist of an unordered list (<ul>) containing list items (<li>), which will represent the navigation links.

<nav class="top-navigation">
    <li><a href="#home">Home</a></li>
    <li><a href="#about">About</a></li>
    <li><a href="#services">Services</a></li>
    <li><a href="#portfolio">Portfolio</a></li>
    <li><a href="#contact">Contact</a></li>

5. Styling the Navigation Menu with CSS

To make the navigation menu visually appealing, let’s apply CSS styles to enhance its appearance. We’ll adopt a mobile-first approach, ensuring the menu looks great on mobile devices and progressively improves on larger screens.

– Creating a Mobile-First Approach

In mobile-first design, we start with the smallest screen size and then add styles to enhance the layout for larger screens. This ensures that our website looks appealing and functions well on mobile devices.

/* Mobile Styles */
.top-navigation {
  display: flex;
  flex-direction: column;

/* Styles for Larger Screens */
@media (min-width: 768px) {
  .top-navigation {
    flex-direction: row;

– Designing the Hamburger Icon

The hamburger icon is a common symbol used for the mobile menu toggle. Let’s create a simple and visually appealing hamburger icon using CSS.

.hamburger-icon {
  display: block;
  cursor: pointer;

/* Styling the Hamburger Lines */
.hamburger-icon span {
  display: block;
  width: 25px;
  height: 3px;
  margin-bottom: 5px;
  background-color: #333;

/* Transition for Smooth Animation */
.hamburger-icon.active span:nth-child(1) {
  transform: rotate(-45deg) translate(-5px, 6px);

.hamburger-icon.active span:nth-child(2) {
  opacity: 0;

.hamburger-icon.active span:nth-child(3) {
  transform: rotate(45deg) translate(-5px, -6px);

– Implementing Transitions for Smooth Animations

Adding transitions to our navigation menu will create smooth animations when the menu opens and closes, providing a pleasant user experience.

.top-navigation {
  /* Other styles */
  transition: all 0.3s ease-in-out;

– Making the Menu Responsive

We’ll use CSS media queries to adjust the layout and appearance of the navigation menu based on different screen sizes, ensuring it works flawlessly on smartphones and tablets.

@media (max-width: 767px) {
  .top-navigation {
    display: none; /* Hide the navigation menu by default on small screens */

  .top-navigation.active {
    display: flex; /* Show the navigation menu when active (menu is open) */

6. Adding Interactivity with JavaScript

Now that our navigation menu looks great, let’s add interactivity using JavaScript to handle the menu toggle functionality.

– Building the Toggle Functionality

With JavaScript, we’ll create a toggle function that opens and closes the mobile menu when the hamburger icon is clicked.

const hamburgerIcon = document.querySelector(".hamburger-icon");
const navigationMenu = document.querySelector(".top-navigation");

hamburgerIcon.addEventListener("click", () => {

– Handling Menu Clicks

We’ll implement JavaScript event listeners to detect when a user clicks on a menu item, ensuring the correct action is triggered.

const menuItems = document.querySelectorAll(".top-navigation a");

menuItems.forEach((item) => {
  item.addEventListener("click", () => {
    // Close the navigation menu when a menu item is clicked (for better UX)

7. Testing and Debugging

Testing our top navigation menu on various devices and browsers is essential to identify and fix any potential issues. Ensure that the menu functions smoothly and looks appealing on different screen sizes.

8. Conclusion

Creating a top navigation menu for smartphones and tablets using CSS and JavaScript enhances a website’s responsiveness and user experience. By following the step-by-step guide and incorporating code snippets, you can craft an intuitive and visually pleasing navigation system that adapts seamlessly to various devices.

9. FAQs

What is responsive web design?

Responsive web design is an approach to web design that aims to make websites adapt to different screen sizes and devices, providing an optimal user experience.

Why is a top navigation menu essential for mobile devices?

A top navigation menu is essential for mobile devices as it allows users to access key content and navigate through the website efficiently.

Can I use other icons for the mobile menu toggle?

Yes, you can use different icons or even text for the mobile menu toggle, depending on your website’s design and branding.

Are there any CSS frameworks that can help with responsive navigation?

Yes, there are several CSS frameworks like Bootstrap and Foundation that offer pre-built responsive navigation components.

Is it necessary to use JavaScript for a mobile navigation menu?

While JavaScript is not strictly necessary, it greatly enhances the user experience by adding interactivity and smooth animations to the menu.

Leave a Comment