Yay! Tengo justo un menu que hace lo que quieres. Como siempre esta desarrollado de modo que cumpla con ciertas normas y un buen nivel de gracefull degradation. Te pongo el codigo y si no entiendes algo nomas avisame.
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Sliding Menu</title>
<script type="text/javascript" src="slidingMenu.js"></script>
<link rel="stylesheet" href="slidingMenu.css" type="text/css" media="screen" />
</head>
<body onload="init()">
<div id="menu">
<ul id="theMenu">
<li>Home</li>
<li>About</li>
<li>Store</li>
<li>Contact</li>
<li>Gallery</li>
</ul>
</div>
</body>
</html>
CSS:
Código:
#menu a{
background-color: #600;
padding: 5px;
color: #FFF;
border-color: #CF3;
border-style: solid;
border-width: 0 3px 0 0;
}
#theMenu{
width: 100px;
background-color: #600;
color: #FFF;
margin: 0;
}
#theMenu li{
background-color: #300;
padding: 5px;
list-style-type: square;
font-family: helvetica;
border-color: #FFF #CC0 #FFF #FFF;
border-width: 1px 3px 1px 0px;
border-style: solid;
width: 80px;
}
#theMenu li:hover{
background-color: #600;
padding: 5px 5px 5px 10px;
}
JS:
Código PHP:
var menushown;
function init(){
if(!document.getElementById){
return;
}
var theMenu = document.getElementById('theMenu');
theMenu.style.position = 'absolute';
theMenu.style.left = -theMenu.offsetWidth + 'px';
theMenu.style.top = '50px';
createButton();
menushown = false;
}
function createButton(){
var menu = document.getElementById('menu');
var button = document.createElement('a');
var buttonText = document.createTextNode("MENU");
button.setAttribute('href','#nogo');
button.appendChild(buttonText);
menu.appendChild(button);
menu.onclick=showHideMenu;
}
showHideMenu = function(){
if(menushown == false){
interval = setInterval(showMenu, 10);
menushown = true;
}else if(menushown == true){
interval = setInterval(hideMenu, 10);
menushown = false;
}
}
function showMenu(){
var theMenu = document.getElementById('theMenu');
var x = parseInt(theMenu.style.left);
if(x < 0){
x++;
theMenu.style.left = x+'px';
}else{
clearInterval(interval)
}
}
function hideMenu(){
var theMenu = document.getElementById('theMenu');
var x = parseInt(theMenu.style.left);
if(x > -theMenu.offsetWidth){
x--;
theMenu.style.left = x+'px';
}else{
clearInterval(interval)
}
}
Saludos.