How TO - Responsive Top Navigation
Learn how to create a responsive top navigation menu with CSS and JavaScript.
Top Navigation
Resize the browser window to see how the responsive navigation menu works:
Create A Responsive Topnav
Step 1) Add HTML:
Example
	<ul class="topnav">
  <li><a href="#home">Home</a></li>
  
	<li><a href="#news">News</a></li>
  <li><a href="#contact">Contact</a></li>
  
	<li><a href="#about">About</a></li>
  <li class="icon">
    
	<a href="javascript:void(0);" onclick="myFunction()">☰</a>
  
	</li>
</ul>
The list item with class="icon" has a link that is used to open and close the topnav on small screens.
Step 2) Add CSS:
Style the list to look like a navigation bar:
Example
	/* 
	Remove margins and padding from the list, and add a black background color */
ul.topnav {
    list-style-type: none;
    
	margin: 0;
    padding: 0;
    overflow: 
	hidden;
    background-color: #333;
}
/* Float 
	the list items side by side */
ul.topnav li {float: left;}
/* 
	Style the links inside the list items */
ul.topnav li a {
    
	display: inline-block;
    color: #f2f2f2;
    
	text-align: center;
    padding: 14px 16px;
    
	text-decoration: none;
    transition: 0.3s;
    
	font-size: 17px;
}
/* Change background color of links on hover */
ul.topnav li 
	a:hover {background-color: #111;}
/* Hide the list item that contains 
	the link that should open and close the topnav on small screens */
ul.topnav li.icon {display: none;}
Add media queries:
Example
	/* When the screen is less than 680 pixels wide, hide all list items, except 
	for the first one ("Home"). Show the list item that 
	contains the link to open and close the topnav (li.icon) */
@media screen and (max-width:680px) {
  ul.topnav li:not(:first-child) 
	{display: none;}
  ul.topnav li.icon {
    float: 
	right;
    display: inline-block;
  }
}
	/* The "responsive" class is added to the topnav with JavaScript when the 
	user clicks on the icon. This class makes the topnav look good on small 
	screens */
@media screen and (max-width:680px) {
  
	ul.topnav.responsive {position: relative;}
  ul.topnav.responsive 
	li.icon {
    position: absolute;
    
	right: 0;
    top: 0;
  }
  
	ul.topnav.responsive li {
    float: none;
    
	display: inline;
  }
  ul.topnav.responsive li a {
    
	display: block;
    text-align: left;
  }
}
Step 3) Add JavaScript:
Example
	/* Toggle between adding and removing the "responsive" class to topnav when 
	the user clicks on the icon */
function myFunction() {
    
	document.getElementsByClassName("topnav")[0].classList.toggle("responsive");
	}
Try it Yourself »
Tip: Go to our CSS Navbar Tutorial to learn more about navigation bars.

