How to Create a Fly-Out Menu with CSS

  • google plus

In Brief...

In this how to, you'll learn how to create a fly-out menu with CSS.

Take our Advanced CSS Training course for free.

See the Course Outline and Register

Instructions

  1. Start with the following HTML document containing an unordered list:
    
    <!DOCTYPE HTML>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>CSS Menu</title>
    </head>
    <body><ul id="mainMenu">
    	<li><a href="home.html">Home</a></li>
    	<li><a href="services.html">Services</a><ul>
    		<li><a href="service1.html">Service 1</a></li>
    		<li><a href="service2.html">Service 2</a></li>
    		<li><a href="service3.html">Service 3</a></li>
    	</ul></li>
    	<li><a href="products.html">Products</a><ul>
    		<li><a href="product1.html">Product 1</a></li>
    		<li><a href="product2.html">Product 2</a></li>
    		<li><a href="product3.html">Product 3</a></li>
    	</ul></li>
    	<li><a href="support.html">Support</a></li>
    	<li><a href="blog.html">Blog</a></li>
    	<li><a href="about.html">About</a><ul>
    		<li><a href="history.html">Company History</a></li>
    		<li><a href="staff.html">Our Staff</a></li>
    		<li><a href="press.html">Press Releases</a></li>
    		<li><a href="investorInfo.html">Investor Information</a></li>
    	</ul></li>
    	<li><a href="contact.html">Contact</a></li>
    </ul></body>
    </html>
    
  2. Create a file for an external styesheet and link to it from the HTML using the following tag:
    
    <link href="menu.css" rel="stylesheet">
    	
  3. Inside the stylesheet, use the following CSS to create a basic vertical menu:
    
    #mainMenu {
    	margin:10px;
    	width:120px;
    	font-family: "Trebuchet MS";
    }
    
    #mainMenu li {
    	display:block;
    	border:1px solid #000;
    	border-top:0px;
    }
    
    #mainMenu li:first-child {
    	border-top:1px solid #000;
    }
    
    #mainMenu a {
    	display:block;
    	padding:3px;
    	text-decoration:none;
    	color:#009;
    }
    
    #mainMenu a:hover {
    	background-color:#009;
    	color:#fff;
    }
    
  4. Open the HTML page in a browser. This code renders the following:
    A Vertical Menu
    By modifying the CSS, we can move the submenus over to the right and hide them until the user hovers over one of the parent menu items. Here are the steps:
  5. Remove the default margins and padding from the list and list items:
    ul, li {
    	margin: 0;
    	padding: 0;
    }
    
  6. Set the position of the main menu items to relative. Like with dropdown menus, we will need to position the submenus using absolute positioning:
    
    #mainMenu li {
    	position:relative;
    	/*other declarations omitted*/
    }
    
  7. Position the submenus absolutely and hide the submenus.
    
    #mainMenu li ul li {
    	font-size:smaller;
    }
    
  8. Display the submenu when the user hovers over the main option.
    #mainMenu li:hover ul {
    	display:block;
    }
    
  9. The finished CSS should look like the following:
    
    ul, li {
    	margin: 0;
    	padding: 0;
    }
    #mainMenu {
    	margin:10px;
    	width:120px;
    	font-family: "Trebuchet MS";
    }
    #mainMenu li {
    	position:relative;
    	display:block;
    	border:1px solid #000;
    	border-top:0px;
    }
    #mainMenu li:first-child {
    	border-top:1px solid #000;
    }
    #mainMenu a {
    	display:block;
    	padding:3px;
    	text-decoration:none;
    	color:#009;
    }
    #mainMenu a:hover {
    	background-color:#009;
    	color:#fff;
    }
    #mainMenu li ul {
    	position:absolute;
    	width:150px;
    	left:118px;
    	top:5px;
    	display:none;
    }
    #mainMenu li ul li {
    	font-size:smaller;
    }
    #mainMenu li:hover ul {
    	display:block;
    }
    
  10. Open the HTML page in a browser. This code renders the following:
    A Fly-Out Menu

Webucator provides instructor-led training to students throughout the US and Canada. We have trained over 90,000 students from over 16,000 organizations on technologies such as Microsoft ASP.NET, Microsoft Office, XML, Windows, Java, Adobe, HTML5, JavaScript, Angular, and much more. Check out our complete course catalog.

Categories

Courses

Author: Chris Minnick

Chris is a prolific author and trainer, and the CEO of WatzThis?. His published books include Writing Computer Code, JavaScript for Kids, Coding with JavaScript For Dummies, Beginning HTML5 and CSS3 For Dummies, Webkit For Dummies, CIW eCommerce Certification Bible, and New Riders' XHTML.

Discuss