Creating a Click-action CSS3 Dropdown Menu with jQuery

Tutorials

Nowadays, pure CSS3 menus still very popular. Mostly – this is UL-LI based menus. Today we will continue making nice menus for you. This will nice dropdown menu (looks like menu at http://www.microsoft.com/) with onclicking (instead onhover).

 


Here are samples and downloadable package:

Live Demo

[sociallocker]

download in package

[/sociallocker]


Ok, download the example files and lets start coding !


Step 1. HTML + JS

As usual, we start with the HTML.

Here are full html code with our menu. As you can see – this is multilevel menu. I hope that you can easy to understand it. Whole menu built on UL-LI elements.

index.html

001 <link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
002 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
003 <div class="example">
004     <div class="menu">
005         <span>
006             <ul id="nav">
007                 <li><a href="#">Home</a></li>
008                 <li><a href="#">Tutorials</a>
009                     <div class="subs">
010                         <div>
011                             <ul>
012                                 <li><h3>Submenu #1</h3>
013                                     <ul>
014                                         <li><a href="#">Link 1</a></li>
015                                         <li><a href="#">Link 2</a></li>
016                                         <li><a href="#">Link 3</a></li>
017                                         <li><a href="#">Link 4</a></li>
018                                         <li><a href="#">Link 5</a></li>
019                                     </ul>
020                                 </li>
021                                 <li><h3>Submenu #2</h3>
022                                     <ul>
023                                         <li><a href="#">Link 6</a></li>
024                                         <li><a href="#">Link 7</a></li>
025                                         <li><a href="#">Link 8</a></li>
026                                     </ul>
027                                 </li>
028                                 <li><h3>Submenu #3</h3>
029                                     <ul>
030                                         <li><a href="#">Link 9</a></li>
031                                         <li><a href="#">Link 10</a></li>
032                                     </ul>
033                                 </li>
034                             </ul>
035                         </div>
036                     </div>
037                 </li>
038                 <li><a href="#">Resources</a>
039                     <div class="subs">
040                         <div class="wrp2">
041                             <ul>
042                                 <li><h3>Submenu #4</h3>
043                                     <ul>
044                                         <li><a href="#">Link 1</a></li>
045                                         <li><a href="#">Link 2</a></li>
046                                         <li><a href="#">Link 3</a></li>
047                                         <li><a href="#">Link 4</a></li>
048                                         <li><a href="#">Link 5</a></li>
049                                     </ul>
050                                 </li>
051                                 <li><h3>Submenu #5</h3>
052                                     <ul>
053                                         <li><a href="#">Link 6</a></li>
054                                         <li><a href="#">Link 7</a></li>
055                                         <li><a href="#">Link 8</a></li>
056                                         <li><a href="#">Link 9</a></li>
057                                         <li><a href="#">Link 10</a></li>
058                                     </ul>
059                                 </li>
060                             </ul>
061                             <p class="sep"></p>
062                             <ul>
063                                 <li><h3>Submenu #6</h3>
064                                     <ul>
065                                         <li><a href="#">Link 11</a></li>
066                                         <li><a href="#">Link 12</a></li>
067                                         <li><a href="#">Link 13</a></li>
068                                     </ul>
069                                 </li>
070                                 <li><h3>Submenu #7</h3>
071                                     <ul>
072                                         <li><a href="#">Link 14</a></li>
073                                         <li><a href="#">Link 15</a></li>
074                                         <li><a href="#">Link 16</a></li>
075                                     </ul>
076                                 </li>
077                                 <li><h3>Submenu #8</h3>
078                                     <ul>
079                                         <li><a href="#">Link 17</a></li>
080                                         <li><a href="#">Link 18</a></li>
081                                         <li><a href="#">Link 19</a></li>
082                                     </ul>
083                                 </li>
084                             </ul>
085                         </div>
086                     </div>
087                 </li>
088                 <li><a href="https://www.script-tutorials.com/about/">About</a></li>
089                 <li><a href="https://www.script-tutorials.com/click-action-css3-dropdown-menu-with-jquery/">Go Back To The Tutorial</a></li>
090             </ul>
091         </span>
092     </div>
093 </div>
094 <script type="text/javascript">
095 jQuery(window).load(function() {
096     $("#nav > li > a").click(function (e) { // binding onclick
097         if ($(this).parent().hasClass('selected')) {
098             $("#nav .selected div div").slideUp(100); // hiding popups
099             $("#nav .selected").removeClass("selected");
100         } else {
101             $("#nav .selected div div").slideUp(100); // hiding popups
102             $("#nav .selected").removeClass("selected");
103             if ($(this).next(".subs").length) {
104                 $(this).parent().addClass("selected"); // display popup
105                 $(this).next(".subs").children().slideDown(200);
106             }
107         }
108         e.stopPropagation();
109     });
110     $("body").click(function () { // binding onclick to body
111         $("#nav .selected div div").slideUp(100); // hiding popups
112         $("#nav .selected").removeClass("selected");
113     });
114 });
115 </script>

In bottom – we can see extra jQuery code. Here are onclick events and a little of animation.

Step 2. CSS

Here are used CSS styles. First two selectors – layout of our demo page. All rest – belong to menu.

css/style.css

001 /* demo page styles */
002 body {
003     background:#eee;
004     margin:0;
005     padding:0;
006     font-family:Segoe UI,Tahoma,Arial,Verdana,sans-serif;
007 }
008 .example {
009     background:#fff url(../images/blue.jpg);
010     width:700px;
011     height:500px;
012     border:1px #000 solid;
013     margin:20px auto;
014     padding:15px;
015     border-radius:3px;
016     -moz-border-radius:3px;
017     -webkit-border-radius:3px;
018 }
019 /* main menu styles */
020 .menu {
021     background-color:#d0e6f5;
022     text-align:center;
023     width:100%;
024 }
025 .menu > span {
026     display:inline-block;
027     margin:0 auto;
028 }
029 #nav {
030     display:inline;
031     text-align:left;
032     position:relative;
033     list-style-type:none;
034 }
035 #nav > li {
036     float:left;
037     padding:0;
038     position:relative;
039 }
040 #nav > li > a {
041     border:1px solid transparent;
042     color:#4F4F4F;
043     display:block;
044     font-size:90%;
045     padding:3px 10px;
046     position:relative;
047     text-decoration:none;
048 }
049 #nav > li > a:hover {
050     background-color:#e4ecf4;
051     border-color:#999
052 }
053 #nav > li.selected  > a {
054     background-color:#FFFFFF;
055     border-color:#999999 #999999 #FFFFFF;
056     z-index:2;
057 }
058 #nav li div {
059     position:relative;
060 }
061 #nav li div div {
062     background-color:#FFFFFF;
063     border:1px solid #999999;
064     padding:12px 0;
065     display:none;
066     font-size:0.75em;
067     margin:0;
068     position:absolute;
069     top:-1px;
070     z-index:1;
071     width:190px;
072 }
073 #nav li div div.wrp2 {
074     width:380px;
075 }
076 #nav .sep {
077     left:190px;
078     border-left:1px solid #E3E3E3;
079     bottom:0;
080     height:auto;
081     margin:15px 0;
082     position:absolute;
083     top:0;
084     width:1px;
085 }
086 #nav li div ul {
087     padding-left:10px;
088     padding-right:10px;
089     position:relative;
090     width:170px;
091     float:left;
092     list-style-type:none;
093 }
094 #nav li div ul li {
095     margin:0;
096     padding:0;
097 }
098 #nav li div ul li h3 {
099     border-bottom:1px solid #E3E3E3;
100     color:#4F4F4F;
101     font-weight:bold;
102     margin:0 5px 4px;
103     font-size:0.95em;
104     padding-bottom:3px;
105     padding-top:3px;
106 }
107 #nav li ul ul {
108     padding:0 0 8px;
109 }
110 #nav li ul ul li {
111     margin:0;
112     padding:0;
113 }
114 #nav li ul ul li a {
115     color:#0060A6;
116     display:block;
117     margin-bottom:1px;
118     padding:3px 5px;
119     text-decoration:none;
120     font-size:0.9em;
121 }
122 #nav li ul ul li a:hover{
123     background-color:#0060a6;
124     color:#fff;
125 }

Live Demo

Conclusion

Hope you enjoyed with this tutorial, don’t forget to tell thanks and leave a comment 🙂 Good luck!

Rate article