CSS3 and HTML5 Musical Dropdown Menu

ScreenHunter 339 Sep. 25 15.43 CSS3 and HTML5 Musical Dropdown Menu

Here’s a fresh tutorial by the guys at Script Tutorials about developing a sleek musical dropdown menu with HTML5 and CSS3. This navigation menu has CSS3 animation effects and an HTML5 Audio element was used in adding music to the menu.

Follow the simple steps below:

Step 1 HTML

<ul id="nav">
 <li><a href="#">Menu element</a>
 <ul>
 <li><a href="#">Submenu element</a></li>
 .....
 </ul>
 </li>
 <li><a href="#">Menu 4</a></li>
 .....
</ul>

Step 2 CSS

#nav,#nav ul {
 list-style: none outside none;
 margin: 0;
 padding: 0;
}
#nav {
 font-family: "Lucida Sans Unicode",Verdana,Arial,sans-serif;
 font-size: 13px;
 height: 36px;
 list-style: none outside none;
 margin: 40px auto;
 text-shadow: 0 -1px 3px #202020;
 width: 700px;
 /* border radius */
 -moz-border-radius: 4px;
 -webkit-border-radius: 4px;
 border-radius: 4px;
 /* box shadow */
 -moz-box-shadow: 0px 3px 3px #cecece;
 -webkit-box-shadow: 0px 3px 3px #cecece;
 box-shadow: 0 3px 4px #8b8b8b;
 /* gradient */
 background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #787878), color-stop(0.5, #5E5E5E), color-stop(0.51, #707070), color-stop(1, #838383));
 background-image: -moz-linear-gradient(center bottom, #787878 0%, #5E5E5E 50%, #707070 51%, #838383 100%);
 background-color: #5f5f5f;
}
#nav li {
 border-bottom: 1px solid #575757;
 border-left: 1px solid #929292;
 border-right: 1px solid #5d5d5d;
 border-top: 1px solid #797979;
 display: block;
 float: left;
 height: 34px;
 position: relative;
 width: 105px;
}
#nav > li:first-child {
 border-left: 0 none;
 margin-left: 5px;
}
#nav ul {
 left: -9999px;
 position: absolute;
 top: -9999px;
 z-index: 2;
}
#nav ul li {
 background: none repeat scroll 0 0 #838383;
 box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
 width: 100%;
}
#nav li a {
 color: #FFFFFF;
 display: block;
 line-height: 34px;
 outline: medium none;
 text-align: center;
 text-decoration: none;
 /* gradient */
 background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #787878), color-stop(0.5, #5E5E5E), color-stop(0.51, #707070), color-stop(1, #838383));
 background-image: -moz-linear-gradient(center bottom, #787878 0%, #5E5E5E 50%, #707070 51%, #838383 100%);
 background-color: #5f5f5f;
}
/* keyframes #animation */
@-webkit-keyframes animation {
 0% {
 -webkit-transform: scale(1);
 }
 30% {
 -webkit-transform: scale(1.2);
 }
 100% {
 -webkit-transform: scale(1.1);
 }
}
@-moz-keyframes animation {
 0% {
 -moz-transform: scale(1);
 }
 30% {
 -moz-transform: scale(1.2);
 }
 100% {
 -moz-transform: scale(1.1);
 }
}
#nav li > a:hover {
 /* CSS3 animation */
 -webkit-animation-name: animation;
 -webkit-animation-duration: 0.3s;
 -webkit-animation-timing-function: linear;
 -webkit-animation-iteration-count: 1;
 -webkit-animation-direction: normal;
 -webkit-animation-delay: 0;
 -webkit-animation-play-state: running;
 -webkit-animation-fill-mode: forwards;
 -moz-animation-name: animation;
 -moz-animation-duration: 0.3s;
 -moz-animation-timing-function: linear;
 -moz-animation-iteration-count: 1;
 -moz-animation-direction: normal;
 -moz-animation-delay: 0;
 -moz-animation-play-state: running;
 -moz-animation-fill-mode: forwards;
}
#nav li:hover ul {
 left: 0;
 top: 34px;
 width: 150px;
}

Step 3 HTML and Javascript
Preparing a new empty array to keep audio objects.

// variables
var aLoops = []; // sound loops
// initialization
addEvent(window, 'load', function (event) {
 // load music files
 aLoops[0] = new Audio('media/background.ogg');
 aLoops[0].volume = 0.3;
 aLoops[1] = new Audio('media/button.ogg');
 aLoops[1].volume = 1.0;
 aLoops[2] = new Audio('media/button_click.ogg');
 aLoops[2].volume = 1.0;
 aLoops[0].addEventListener('ended', function() { // loop background sound
 this.currentTime = 0;
 this.play();
 }, false);
 aLoops[0].play();
});
Adding the handlers to different events – mouseover, mouseout and click
// all the buttons
var aBtns = document.querySelectorAll('#nav li');
// onmouseover event handler
addEvent(aBtns, 'mouseover', function (event) {
 aLoops[1].currentTime = 0;
 aLoops[1].play(); // play click sound
});
// onmouseout event handler
addEvent(aBtns, 'mouseout', function (event) {
 aLoops[1].currentTime = 0;
 aLoops[1].pause(); // play click sound
});
// onclick event handler
addEvent(aBtns, 'click', function (event) {
 aLoops[2].currentTime = 0;
 aLoops[2].play(); // play click sound
});

Check out the DEMO.

Incoming search terms for the article:

Related Posts

Create Google Play’s Tab Navigation Using jQuery And CSS

PS Advanced Compositioning

How To Create A Triangular Pixelation Effect Using Photoshop

How to Create Subtle Caption Hover Effects