20 Responsive Navigation Solutions and Tutorials

Planning and creating your menu for mobiles will perhaps be the trickiest aspect of building a responsive layout. It is a juggling act between both readability and functionality.

In years gone by, it was about converting your navigation into a <select> drop-down menu, now, its all about the “three line” (or hamburger menu), toggle menu, drawer-style navs and animated side panels.

Hopefully the solutions we have for you below will help get you on your way.

You might also like to check out this related article: 15 Responsive Navigation jQuery Plugins →

Basic Responsive “Three Line” Menu (CSS & jQuery)

Basic Responsive Three Line Menu

This tutorial shows you how to, with a relatively short amount of code, progressively enhance a responsive site and build a “three line” responsive menu without adding additional markup to the page. All additional markup will be included dynamically using jQuery.

Basic Responsive “Three Line” Menu

Responsive Multi-Level Navigation (CSS & jQuery)

Responsive Multi-Level Navigation

With this approach to responsive navigation, you’re shown how to accommodate large, multi-level menus using media queries and jQuery, whilst trying to keep the markup as simple as possible and any external resources kept a minimum.

The aim is to build, on larger screens, a horizontal drop-down menu, with up to two levels of sub-menus that appear when the parent element is hovered over. And on smaller screens, a menu button that will display the menu vertically, displaying sub-menus when the parent element is clicked or touched.

Responsive Multi-Level Navigation

Responsive Toggle Menu (CSS & jQuery)

Responsive Toggle Menu

This tutorial with show you how to, when the browser window is at mobile sizes, build a navigation bar that will “magically” transform into a dropdown list at mobile sizes and at tablet sizes and up, will remain as the horizontal menu bar.

Responsive Toggle Menu

Animated jPanelMenu (jQuery Plugin)


jPanelMenu is a jQuery plugin that creates an animated paneled-style menu (like the type seen in the mobile versions of Facebook and Google). The animation is handled by CSS transitions for browsers that support it and are hardware-accelerated on supporting devices, so the animations are silky smooth. For browsers that do not support CSS transitions, the jQuery animation engine is used as a fallback.

Responsive Toggle Menu

CSS: Responsive Navigation Menu (CSS-only)

CSS - Responsive Navigation Menu

With this technique, you will be shown how to create a responsive menu, without JavaScript, using clean and semantic HTML5 markup. The menu can be aligned left, center or right, and this will toggle on hover, which is much more user-friendly than on click. This technique works on all mobile and desktop browsers including Internet Explorer.

CSS: Responsive Navigation Menu

Smooth Responsive Dropdown Menu – Top Drawer (CSS & jQuery)

Smooth Responsive Dropdown Menu - Top Drawer

This tutorial demonstrates how to create a smoother reveal mobile menu using CSS3 rather than animating it with JavaScript. Once you click the menu icon, the click event will assign the class of active to the drawer container that alters the translate value to bring the drop-down menu nice and smoothly into view.
Modernizr will detect whether the user's device is capable of CSS transforms, if it isn't the menu will simply show and hide the menu after the button is pressed.

Top Drawer

Simple Responsive Navigation (CSS & jQuery)

Simple Responsive Navigation

With this tutorial, you will be shown a very simple approach for building a responsive menu from the ground up using CSS3 media queries and a little jQuery to display the menu on a smaller mobile screen.

Simple Responsive Navigation

Mobile Drawer-Style Menu (jQuery Plugin)

This jQuery Mobile Menu Plugin creates a drawer-style navigation on your mobile site, as seen on iOS.

Mobile Drawer-Style Menu

MeanMenu – A Media Query Independent Navigation (jQuery Plugin)

MeanMenu - A Media Query Independent Navigation


CSS3 Responsive Menu (CSS-only)

Creating a CSS3 Responsive Menu

This tutorial offers a step by step instructions to building a responsive navigation menu that adapts to varying screen sizes (in a block-style), using media queries.

CSS3 Responsive Menu

Simple & Responsive Mobile First Navigation (CSS-only)

Simple & Responsive Mobile First Navigation

In this tutorial you will learn how to build a simple and straight-forward mobile layout and navigation, then progressively enhance the design for larger screens, using media queries that detect steadily increasing screen sizes, adding style and features as you go.

Simple & Responsive Mobile First Navigation

‘Stacking’ Responsive Menu (Proof of Concept)

Stacking Responsive Menu

Please note that this solution is a proof of concept and should not be used in production. Having said that, go ahead and view the demo (link below) and resize your window and you will see the amazing ‘stacking effect’ of each of the pages sections.

‘Stacking’ Responsive Menu

Progressive And Responsive Navigation Tutorial

Progressive And Responsive Navigation tutorial

This tutorial, from Smashing Magazine, takes you through the steps for coding your navigation using a little forethought and considering the principles of progressive enhancement from the beginning and applying some responsive practices at the end, allowing your navigation to easily accommodate less-capable browsers and modern browsers in both desktop and mobile environments.

Progressive And Responsive Navigation →

Responsive Navigation Menu Tutorial

code a simple and effective responsive navigation menu

With this tutorial you will learn how to code a simple and effective responsive navigation menu, with a grid layout, that you will be able to easily modify and reuse in your own projects.

Responsive Navigation Menu →

TinyNav.js jQuery Plugin

TinyNav.js navigations to a select dropdowns for small screens

TinyNav.js is a tiny jQuery plugin (362 bytes minified and gzipped) that converts <ul> and <ol> navigations to a select dropdowns for small screens. It also automatically selects the current page and adds selected="selected" for that item.

TinyNav.js →

Responsive Drop Down Navigation Menu Tutorial

Responsive Drop Down Navigation Menu tutorial

The code for this menu is based on the famous Suckerfish Dropdown menu, restyled to make it responsive. It will work great in all modern desktop browsers without Javascript.

Responsive Drop Down Navigation Menu →

HorizontalNav jQuery Plugin

HorizontalNav is a jQuery plugin that spans a horizontal navigation to fit the full width of container

HorizontalNav is a jQuery plugin that spans a horizontal navigation to fit the full width of it's container. It comes with an option to make it responsive, allowing the navigation to auto-adjust when the window is resized.

HorizontalNav →

Responsive, Mobile-First Navigation Menu Tutorial

Responsive tutorial Mobile-First Navigation Menu

This tutorial demonstrates how to develop a complex responsive navigation menu using the "Mobile-First Approach". The aim is to present mobile users with a pseudo-native, touch-conducive and interactive interface that enables them to navigate the website with ease.

Responsive, Mobile-First Navigation Menu →Demo →

SelectNav.js Javascript Plugin

SelectNav.js a JavaScript plugin that lets you convert your website navigation into a select

SelectNav.js is a JavaScript plugin that lets you convert your website navigation into a <select> drop-down menu. Used together with media queries it helps you to create a space saving, responsive navigation for small screen devices.

SelectNav.js →

Convert a Menu to a Dropdown for Small Screens Tutorial

Convert a Menu to a Dropdown for Small Screens

Convert a Menu to a Dropdown for Small Screens →

Simple Responsive Menu

Simple Responsive Menu convert it to a small menu button for smaller screens that only appears when pressed

This tutorial takes a typical desktop menu and shows you how to, using Modernizr, jQuery and media queries, convert it to a small menu button for smaller screens that only appears when pressed, and pressing it again will retract it.

Simple Responsive Menu →

Mobile Menu jQuery Plugin

Mobile Menu a jQuery plugin that turns site navigation into a dropdown

Mobile Menu is a jQuery plugin that turns your site's navigation into a dropdown (<select>) when your browser is at mobile widths. It comes with a handful of options, including the really useful "combine", that allows you to convert multiple navigation lists into a single dropdown.

Mobile Menu →

Further Reading & Resources…

  • Responsive Navigation Patterns →
    Top and left navigations are typical on large screens, but lack of screen real estate on small screens makes for an interesting challenge. This detailed article, from Brad Frost, takes a look at the various ways of handling navigation for small screen sizes and discusses how mobile navigation must strike a balance between quick access to a site’s information and unobtrusiveness.
  • Scalable Navigation Patterns in Responsive Web Design →
    Here are some of the lessons learned by Michael Mesker, from palantir.net, while working on a recent real-life, large-scale project. Specifically, this post focuses on how they chose to deal with deep navigation in the landscape of a templated environment.
  • 7 Responsive Navigation Patterns →


  • Theracoon

    If you read the comments on the Web Designer Wall menu you’ll find a lot of comments from people who could not get this menu to work on IOS and Android as it is dependent on hover states.

  • The “CSS: Responsive Navigation Menu (CSS-only)” didn’t work for me on Chrome. I clicked an option in the dropdown, and the page didn’t change …

  • Imran khan

    Responsive Navigation Menu not dropdown Resolution 360 x 640 pls give me a solution

  • James Jeffery

    Change the :hover psudo-class to :active

  • And where is tinynav or responsive-nav? ;)

  • Chris

    Another site i won’t be back to. Re-publishing articles with new dates to manipulate search engine rankings is lame.

  • Paul Andrew

    Woah, hold on there. We continually update all of our content with new items and also remove dead links to keep the content permanently relevant, and the date on the post reflects the time we updated. If we didn’t do that, you would be served with older redundant content.

  • Chris

    Except the content is not permanently relevant. These techniques are not going to be useful except as historical information. In which case knowing the original post date is important.

    Ethics check here sir: Does this serve our needs as much or more than it serves yours? What are other authors that have industry respect doing? For instance, Brad Frost, one of the links referenced, someone i think we both can respect, wrote his article 2 years before yours, and yet still has the same date for the search engines.

    As you were the original author you should be in the position to know this information is out of date. After reviewing further articles i see more of the same is happening across the board here. Content is showing up with new dates without regard to its current relevance. An updated link does not make it relevant. Is there additional information to the article, an addendum, something? Not here, and not in any of the articles i spot checked.

    So look Paul, i do not begrudge you the opportunity to make a living, but this policy is not cool.