Menú despliégale

Hola amigos se que es una falta de resto pero es que e intentado de todas formas y maneras de hacer una barra de de navegación despliégale y no e podido así que si me pueden dar los códigos de la planilla y del la hoja estilo se los agradecería demaciado. :shock:

Gracias por su amable atención :oops:
Hola

ya seguiste el curso paso a paso?????

ahi tienes un desplegable listo para usar y personalizar si lo deseas

son varios documentos los que necesitas
asi que.... te sugiero te pases por ahi, y los descargues que ya están comprimidos

saludos
Compañero tengo el mismo problema, lo mas conveniente es ponerlo en la seccion de curso paso a paso, pues ahi tengo yo por lo menos mi queja, y la hemos estado solucionando por oras. Quiza podiras aportar alguna cosilla, o bien encontrar la respuesta a traves de mi queja.

Saludos..
Estudiar no es aprender.
gomez escribió:Hola amigos se que es una falta de resto pero es que e intentado de todas formas y maneras de hacer una barra de de navegación despliégale y no e podido así que si me pueden dar los códigos de la planilla y del la hoja estilo se los agradecería demaciado. :shock:

Gracias por su amable atención :oops:
Hola:
Para que no se líe demasiado, cree una carpeta en su escritorio, pongale por nombre desplegables, luego descargue allí en esa carpeta los archivos que hay en el curso, cuando ya tenga en esa carpeta los doce archivos, coja los que son de imagenes:
gris.png
blanco.png
espaciador.gif
fondo-activo.gif
fondo-no-activo.gif
punto.gif
submenu-abierto.gif
submenu-cerrado.gif
Todos esos póngalos en su carpeta objetos, la que está dentro de la carpeta "web-ejemplo-cctw" de su escritorio
Los otros archivos, que son cuatro:
definir-menus.txt
estilo-menu-desplegable.css
no-tocar.txt
numero-de-menus.txt Póngalos dentro de la carpeta "web-ejemplo-cctw", la que está en su escritorio
Así tendrá ya todos los archivos donde deben estar, luego en el curso se le dice que es lo que tiene que escribir en tal o cual parte de su página para que estos funcionen.
Los códigos que tiene que poner en su página van tres entre el <head> y el </head>
debajo de donde dice <title>bla bla</title>
<link rel="stylesheet" href="estilo-menu-desplegable.css" type="text/css" media="all">
<script language="javascript" src="no-tocar.txt" type="text/javascript"></script>
<script language="javascript" src="numero-de-menus.txt"type="text/javascript"></script>

Y el otro hay que ponerlo casi al final de la página:
<script language="javascript" src="definir-menus.txt" type="text/javascript"></script>
</body>
</html>
Si tiene mas dudas pregunte, pero le sugiero que relea lo de los desplegables en el curso para que tenga mejor idea de como es
Saludos
Agradecido de los que aprenden enseñando
Hola, te paso los codigos de como ha de quedar la web después de acabar las cuatro lecciones del curso paso a paso, aunque te recomiendo que te leas bien dicho curso ya que tendrás que hacer cambios para amoldarla al diseño y contenido que tu quieras tener en la tuya,.

plantilla.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
<link rel="stylesheet" href="estilo-general.css"          type="text/css" media="all">
<link rel="stylesheet" href="estilo-menu-desplegable.css" type="text/css" media="all">
<script language="javascript" src="no-tocar.txt"          type="text/javascript"></script>
<script language="javascript" src="numero-de-menus.txt"   type="text/javascript"></script>
</head>
<body onload="init();">
<div id="global">
  <div id="curva-superior"></div>
  <div id="cabecera">
    <div id="logotipo">[url="index.html"][img]objetos/logotipo.gif[/img][/url]</div>
    <div id="publicidad">Bienvenidos a mi Web</div>
  </div>
  <div id="navegacion">
    <ul>
      [*][url="#"]Sección 1[/url]
      [*][url="#"]Sección 2[/url]
        [*][url="#"]Sección 2[/url]
    [/list]
  </div>
  <div id="contenido">
       <div id="menu">
         <h1>Título de Sección 1</h1>
<ul>[*][url="#"]Enlace 1[/url][*][url="#"]Enlace 2[/url][*]
[url="#"]Enlace 3[/url][*][url="#"]Enlace 4[/url][/list]
       </div>
<h1>Esta será la zona principal de la web</h1>


Este es mi segundo párrafo. Acabo de poner un punto y en cambio sigue siendo un párrafo
pues no le he colocado aún la etiqueta de cierre. Voy a ponersela justo aquí.</p>
<h2>Y este es el tercer párrafo.</h2>


En pocas lecciones aprenderé a darle margenes para
separarlos unos de otros, e incluso hacerles sanguias por la izquierda a la primera línea,
que queda mucho mejor.</p>


Anda, fijate! Salen todos centrados, que cosa. Espero que Jorgens nos enseñe a ponerlos
alineados a la izquierda, o justificados. Así esto parece una poesia! je je je.</p>
</div>
  <div id="pie">
  <div id="pieuno">
  <ul>[*][url="#"]Foro Ejemplo[/url][*][url="#"]Contactos[/url][*][url="#"]Nos Enlazan[/url]
  [/list]
</div>
  <div id="piedos">pie dos</div>
  <div id="pietres">
  <ul>[*][url="#"]Directorio[/url][*][url="#"]TopSite[/url][*][url="#"]Mapa de la Web[/url]
  [/list]
</div>
</div>
  <div id="curva-inferior"></div>
</div>
<script language="javascript" src="definir-menus.txt" type="text/javascript"></script>
</body>
</html>

estilo-general.css

* {text-indent:0px ; margin:0px ; padding:0px ; border:0px}
p {text-align: justify}
h1 {font-size: 1.2em; color:blue ; font-weight: bold ; text-decoration: underline ;
    text-align: center}
h2 {font.size: 1.1em; color:blue ; font-weight: bold ; text-decoration: none ; 
    text-align: center}
body        {text-align: center }
#global     {width:800px ; margin:4px auto }

#curva-superior { background-image: url(objetos/curva-superior.gif) ; 
                  background-repeat: no-repeat ;
                  width: 800px ;
                  height:12px ;
                  overflow: hidden }
#cabecera   {background-color: white ; border-left: black 1px solid ; 
             border-right: black 1px solid ; height:85px}
#logotipo   {width:280px ; float:left }
#publicidad {width:518px ; float:right ; margin-top:25px ; font-size: 16px }
#navegacion {background-color: gray ; border: black 1px solid  ; height:20px}
#navegacion li {float:left ; list-style:none ; margin: 0px 20px 0px 20px }
#navegacion ul { margin-left: 180px }
#contenido  {background-color: orange ; border-left: black 1px solid ; 
             border-right: black 1px solid }
#contenido p {margin: 5px 10px 0px 10px ; text-indent: 15px}
#menu       {background-color: orange ; width: 150px ; float:left ; 
             text-align:left ; margin: 3px 10px 3px 3px ;
             background-image: url(objetos/menu-parte-inferior.gif);
			 background-position: bottom ;
             padding-bottom:5px }
#menu li    {list-style:none ; margin: 4px 8px 4px 6px }
#menu h1 {text-decoration:none ; font-size:12px ; padding-top:12px ;
          background-image: url(objetos/menu-parte-superior.gif) }
#pie     {border-left:  black 1px solid ; border-right: black 1px solid ; 
          border-top:   black 1px solid ; height: 65px }
					
#pie li  {list-style: none ; font-size: 12px }				
#pieuno  {float:left ; width:150px }
#piedos  {float:left ; width:498px ; background-color: silver}
#pietres {float:left ; width:150px }


			 
			 
#curva-inferior { background-image: url(objetos/curva-inferior.gif) ; 
                  background-repeat: no-repeat ;
                  width: 800px ;
                  height:12px ;
                  overflow: hidden }						
a         {color: brown ; text-decoration:none ; display: block }
a:link    {}
a:visited {}
a:hover   {color:red ; text-decoration:underline ; background-color: silver}
a:active  {}
#pie a         {color: blue; text-decoration:none ; display: block }
#pie a:link    {}
#pie a:visited {}
#pie a:hover   {color:black ; text-decoration:underline ; background-color: white }
#pie a:active  {color:black}
#logotipo a         {}
#logotipo a:link    {}
#logotipo a:visited {}
#logotipo a:hover   {background-color: white }
#logotipo a:active  {}


definir-menus.txt
if (TransMenu.isSupported())
{
var ms=new TransMenuSet(TransMenu.direction.down,1,0, TransMenu.reference.bottomLeft);

var desplegable1 = ms.addMenu(document.getElementById('desplegable1'));
 desplegable1.addItem('Seccion 1','ruta');
 desplegable1.addItem('Seccion 2','ruta');
 var desplegable1_0 = desplegable1.addMenu(desplegable1.items[1]);
 	 desplegable1_0.addItem('Sub-Seccion 2.1','ruta');
	 desplegable1_0.addItem('Sub-Seccion 2.2','ruta');
	 desplegable1_0.addItem('Sub-Seccion 2.3','ruta');
 desplegable1.addItem('Seccion 3','ruta');
 desplegable1.addItem('Seccion 4','ruta');
 desplegable1.addItem('Seccion 5','ruta');
 var desplegable1_0 = desplegable1.addMenu(desplegable1.items[4]);
 	 desplegable1_0.addItem('Sub-Seccion 5.1','ruta');
	 desplegable1_0.addItem('Sub-Seccion 5.2','ruta');

var desplegable2 = ms.addMenu(document.getElementById('desplegable2'));
 desplegable2.addItem('Seccion 1','ruta');
 desplegable2.addItem('Seccion 2','ruta');
 var desplegable2_0 = desplegable2.addMenu(desplegable2.items[1]);
 	 desplegable2_0.addItem('Sub-Seccion 2.1','ruta');
	 desplegable2_0.addItem('Sub-Seccion 2.2','ruta');
	 desplegable2_0.addItem('Sub-Seccion 2.3','ruta');
 desplegable2.addItem('Seccion 3','ruta');
 desplegable2.addItem('Seccion 4','ruta');
 desplegable2.addItem('Seccion 5','ruta');
 var desplegable2_0 = desplegable2.addMenu(desplegable2.items[4]);
 	 desplegable2_0.addItem('Sub-Seccion 5.1','ruta');
	 desplegable2_0.addItem('Sub-Seccion 5.2','ruta');

var desplegable3 = ms.addMenu(document.getElementById('desplegable3'));
 desplegable3.addItem('Seccion 1','ruta');
 desplegable3.addItem('Seccion 2','ruta');
 var desplegable3_0 = desplegable3.addMenu(desplegable3.items[1]);
 	 desplegable3_0.addItem('Sub-Seccion 2.1','ruta');
	 desplegable3_0.addItem('Sub-Seccion 2.2','ruta');
	 desplegable3_0.addItem('Sub-Seccion 2.3','ruta');
 desplegable3.addItem('Seccion 3','ruta');
 desplegable3.addItem('Seccion 4','ruta');
 desplegable3.addItem('Seccion 5','ruta');
 var desplegable3_0 = desplegable3.addMenu(desplegable3.items[4]);
 	 desplegable3_0.addItem('Sub-Seccion 5.1','ruta');
	 desplegable3_0.addItem('Sub-Seccion 5.2','ruta');

TransMenu.renderAll();
}


estilo-menu-desplegable.css


/* this is the clipping region for the menu. it's width and height get set by script, depending on the size of the items table */
.transMenu {
	position:absolute;
	overflow:hidden;
	left:-1000px;
	top:-1000px;
	text-align: left;
	}

/* this is the main container for the menu itself. it's width and height get set by script, depending on the size of the items table */
.transMenu .content {
	position:absolute;
	}

/* this table comprises all menu items. each TR is one item. It is relatively positioned so that the shadow and background transparent divs can be positioned underneath it */
.transMenu .items {
	position:relative;
	left:0px; top:0px;
	border:1px solid #999;
	z-index:2;
	}

.transMenu.top .items {
	border-top:none;
	}

/* each TR.item is one menu item */
.transMenu .item {
    color:#000000;
        background-image: url(objetos/fondo-no-activo.gif);
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9px;
	font-weight: bold;
    text-decoration:none;
	/* this is a hack for mac/ie5, whom incorrectly cascades the border properties of the parent table to each row */
	border:none;
	cursor:pointer;
	cursor:hand;
	}

/* this DIV is the semi-transparent white background of each menu. the -moz-opacity is a proprietary way to get transparency in mozilla, the filter is for IE/windows 5.0+. */
/* we set the background color in script because ie mac does not use it; that browser only uses a semi-transparent white PNG that the spacer gif inside this DIV is replaced by */
.transMenu .background {
	position:absolute;
	left:0px;
	top:0px;
	z-index:1;
	-moz-opacity:.8;
	filter:alpha(opacity=95);
	}

/* same concept as .background, but this is the sliver of shadow on the right of the menu. It's left, height, and background are set by script. In IE5/mac, it uses a PNG */
.transMenu .shadowRight {
	position:absolute;
	z-index:3;
	top:3px; width:2px;
	-moz-opacity:.4;
	filter:alpha(opacity=40);
	}

/* same concept as .background, but this is the sliver of shadow on the bottom of the menu. It's top, width, and background are set by script. In IE5/mac, it uses a PNG */
.transMenu .shadowBottom {
	position:absolute;
	z-index:1;
	left:3px; height:2px;
	-moz-opacity:.4;
	filter:alpha(opacity=40);
	}

/* this is the class that is used when the mouse is over an item. script sets the row to this class when required. */
.transMenu .item.hover {
	background-image: url(objetos/fondo-activo.gif);
	color:#385385;
	}

/* this is either the dingbat that indicates there is a submenu, or a spacer gif in it's place. We give it extra margin to create some space between the text and the dingbat */
.transMenu .item img {
	margin-left:10px;
	}
.textoNoIdent {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	color: #333333;
	text-decoration: none;
}
.formError {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    color: #333333;
    border-top: 1px solid #C4CCCC;
    border-right: 1px solid #ACB5B5;
    border-bottom: 1px solid #6F7777;
    border-left: 1px solid #ACB5B5;
    padding: 2px 0 2px 0.25em;
    background-color: #F5E984;
}
.txtError {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: bold;
    color: #990000;
    background-color: #E9E9E9;
    padding: 5px;
    text-align: justify;
}


no-tocar.txt

/* =================================================================================================
 * TransMenu
 * March, 2003
 *
 * Customizable multi-level animated DHTML menus with transparency.
 *
 * Copyright 2003-2004, Aaron Boodman ([url]www.youngpup.net[/url])
 * =================================================================================================
 * "Can I use this?"
 *
 * Use of this library is governed by the Creative Commons Attribution 2.0 License. You can check it
 * out at: [url]http://creativecommons.org/licenses/by/2.0/[/url]
 *
 * Basically: You may copy, distribute, and eat this code as you wish. But you must give me credit
 * for writing it. You may not misrepresent yourself as the author of this code.
 * =================================================================================================
 * "It's kinda hard to read, though"
 *
 * The uncompressed, commented version of this script can be found at:
 * [url]http://youngpup.net/projects/transMenus[/url]
 * =================================================================================================
 * updates:
 * 04.19.04 fixed cascade problem with menus nested greater than two levels.
 * 12.23.03 added hideCurrent for menu actuators with no menus. renamed to TransMenu.
 * 04.18.03	fixed render bug in IE 5.0 Mac by removing that browser from compatibility table ;)
 *			also made gecko check a little more strict by specifying build no.
 * ============================================================================================== */



//==================================================================================================
// Configuration properties
//==================================================================================================
TransMenu.spacerGif = "objetos/espaciador.gif";                     // path to a transparent spacer gif
TransMenu.dingbatOn = "objetos/submenu-abierto.gif";            // path to the active sub menu dingbat
TransMenu.dingbatOff = "objetos/submenu-cerrado.gif";          // path to the inactive sub menu dingbat
TransMenu.dingbatSize = 14;                            // size of the dingbat (square shape assumed)
TransMenu.menuPadding = 0;                             // padding between menu border and items grid
TransMenu.itemPadding = 2;                             // additional padding around each item
TransMenu.shadowSize = 2;                              // size of shadow under menu
TransMenu.shadowOffset = 3;                            // distance shadow should be offset from leading edge
TransMenu.shadowColor = "#888";                        // color of shadow (transparency is set in CSS)
TransMenu.shadowPng = "objetos/gris.png";               // a PNG graphic to serve as the shadow for mac IE5
TransMenu.backgroundColor = "#C4CCCC";                   // color of the background (transparency set in CSS)
TransMenu.backgroundPng = "objetos/blanco.png";          // a PNG graphic to server as the background for mac IE5
TransMenu.hideDelay = 1000;                            // number of milliseconds to wait before hiding a menu
TransMenu.slideTime = 400;                             // number of milliseconds it takes to open and close a menu
TransMenu.preImg = "objetos/punto.gif";

//==================================================================================================
// Internal use properties
//==================================================================================================
TransMenu.reference = {topLeft:1,topRight:2,bottomLeft:3,bottomRight:4};
TransMenu.direction = {down:1,right:2};
TransMenu.registry = [];
TransMenu._maxZ = 100;



//==================================================================================================
// Static methods
//==================================================================================================
// supporting win ie5+, mac ie5.1+ and gecko >= mozilla 1.0
TransMenu.isSupported = function() {
        var ua = navigator.userAgent.toLowerCase();
		var pf = navigator.platform.toLowerCase();
        var an = navigator.appName;
        var r = false;

        if (ua.indexOf("gecko") > -1 && navigator.productSub >= 20020605) r = true; // gecko >= moz 1.0
        else if (an == "Microsoft Internet Explorer") {
                if (document.getElementById) { // ie5.1+ mac,win
                        if (pf.indexOf("mac") == 0) {
							r = /msie (\d(.\d*)?)/.test(ua) && Number(RegExp.$1) >= 5.1;
						}
						else r = true;
                }
        }

        return r;
}

// call this in onload once menus have been created
TransMenu.initialize = function() {
        for (var i = 0, menu = null; menu = this.registry[i]; i++) {
                menu.initialize();
        }
}

// call this in document body to write out menu html
TransMenu.renderAll = function() {
        var aMenuHtml = [];
        for (var i = 0, menu = null; menu = this.registry[i]; i++) {
                aMenuHtml[i] = menu.toString();
        }
        document.write(aMenuHtml.join(""));
}

//==================================================================================================
// TransMenu constructor (only called internally)
//==================================================================================================
// oActuator            : The thing that causes the menu to be shown when it is mousedover. Either a
//                        reference to an HTML element, or a TransMenuItem from an existing menu.
// iDirection           : The direction to slide out. One of TransMenu.direction.
// iLeft                : Left pixel offset of menu from actuator
// iTop                 : Top pixel offset of menu from actuator
// iReferencePoint      : Corner of actuator to measure from. One of TransMenu.referencePoint.
// parentMenuSet        : Menuset this menu will be added to.
//==================================================================================================
function TransMenu(oActuator, iDirection, iLeft, iTop, iReferencePoint, parentMenuSet) {
        // public methods
        this.addItem = addItem;
        this.addMenu = addMenu;
        this.toString = toString;
        this.initialize = initialize;
        this.isOpen = false;
        this.show = show;
        this.hide = hide;
        this.items = [];

        // events
        this.onactivate = new Function();       // when the menu starts to slide open
        this.ondeactivate = new Function();     // when the menu finishes sliding closed
        this.onmouseover = new Function();      // when the menu has been moused over
        this.onqueue = new Function();          // hack .. when the menu sets a timer to be closed a little while in the future
		this.ondequeue = new Function();

        // initialization
        this.index = TransMenu.registry.length;
        TransMenu.registry[this.index] = this;

        var id = "TransMenu" + this.index;
        var contentHeight = null;
        var contentWidth = null;
        var childMenuSet = null;
        var animating = false;
        var childMenus = [];
        var slideAccel = -1;
        var elmCache = null;
        var ready = false;
        var _this = this;
        var a = null;

        var pos = iDirection == TransMenu.direction.down ? "top" : "left";
        var dim = null;

        // private and public method implimentations
        function addItem(sText, sUrl) {
                var item = new TransMenuItem(sText, sUrl, this);
                item._index = this.items.length;
                this.items[item._index] = item;
        }

        function addMenu(oMenuItem) {
                if (!oMenuItem.parentMenu == this) throw new Error("Cannot add a menu here");

                if (childMenuSet == null) childMenuSet = new TransMenuSet(TransMenu.direction.right, -5, 2, TransMenu.reference.topRight);

                var m = childMenuSet.addMenu(oMenuItem);

                childMenus[oMenuItem._index] = m;
                m.onmouseover = child_mouseover;
                m.ondeactivate = child_deactivate;
                m.onqueue = child_queue;
				m.ondequeue = child_dequeue;

                return m;
        }

        function initialize() {
                initCache();
                initEvents();
                initSize();
                ready = true;
        }

        function show() {
                //dbg_dump("show");
                if (ready) {
                        _this.isOpen = true;
                        animating = true;
                        setContainerPos();
                        elmCache["clip"].style.visibility = "visible";
                        elmCache["clip"].style.zIndex = TransMenu._maxZ++;
                        //dbg_dump("maxZ: " + TransMenu._maxZ);
                        slideStart();
                        _this.onactivate();
                }
        }

        function hide() {
                if (ready) {
                        _this.isOpen = false;
                        animating = true;

                        for (var i = 0, item = null; item = elmCache.item[i]; i++) 
                                dehighlight(item);

                        if (childMenuSet) childMenuSet.hide();

                        slideStart();
                        _this.ondeactivate();
                }
        }

        function setContainerPos() {
                var sub = oActuator.constructor == TransMenuItem; 
                var act = sub ? oActuator.parentMenu.elmCache["item"][oActuator._index] : oActuator; 
                var el = act;
                
                var x = 0;
                var y = 0;

                
                var minX = 0;
                var maxX = (window.innerWidth ? window.innerWidth : document.body.clientWidth) - parseInt(elmCache["clip"].style.width);
                var minY = 0;
                var maxY = (window.innerHeight ? window.innerHeight : document.body.clientHeight) - parseInt(elmCache["clip"].style.height);

                // add up all offsets... subtract any scroll offset
                while (sub ? el.parentNode.className.indexOf("transMenu") == -1 : el.offsetParent) {
                        x += el.offsetLeft;
                        y += el.offsetTop;

                        if (el.scrollLeft) x -= el.scrollLeft;
                        if (el.scrollTop) y -= el.scrollTop;
                        
                        el = el.offsetParent;
                }

                if (oActuator.constructor == TransMenuItem) {
                        x += parseInt(el.parentNode.style.left);
                        y += parseInt(el.parentNode.style.top);
                }

                switch (iReferencePoint) {
                        case TransMenu.reference.topLeft:
                                break;
                        case TransMenu.reference.topRight:
                                x += act.offsetWidth;
                                break;
                        case TransMenu.reference.bottomLeft:
                                y += act.offsetHeight;
                                break;
                        case TransMenu.reference.bottomRight:
                                x += act.offsetWidth;
                                y += act.offsetHeight;
                                break;
                }

                x += iLeft;
                y += iTop;

                x = Math.max(Math.min(x, maxX), minX);
                y = Math.max(Math.min(y, maxY), minY);

                elmCache["clip"].style.left = x + "px";
                elmCache["clip"].style.top = y + "px";
        }

        function slideStart() {
                var x0 = parseInt(elmCache["content"].style[pos]);
                var x1 = _this.isOpen ? 0 : -dim;

                if (a != null) a.stop();
                a = new Accelimation(x0, x1, TransMenu.slideTime, slideAccel);

                a.onframe = slideFrame;
                a.onend = slideEnd;

                a.start();
        }

        function slideFrame(x) {
                elmCache["content"].style[pos] = x + "px";
        }

        function slideEnd() {
                if (!_this.isOpen) elmCache["clip"].style.visibility = "hidden";
                animating = false;
        }

        function initSize() {
                // everything is based off the size of the items table...
                var ow = elmCache["items"].offsetWidth;
                var oh = elmCache["items"].offsetHeight;
                var ua = navigator.userAgent.toLowerCase();

                // clipping container should be ow/oh + the size of the shadow
                elmCache["clip"].style.width = ow + TransMenu.shadowSize +  2 + "px";
                elmCache["clip"].style.height = oh + TransMenu.shadowSize + 2 + "px";

                // same with content...
                elmCache["content"].style.width = ow + TransMenu.shadowSize + "px";
                elmCache["content"].style.height = oh + TransMenu.shadowSize + "px";

                contentHeight = oh + TransMenu.shadowSize;
                contentWidth = ow + TransMenu.shadowSize;
                
                dim = iDirection == TransMenu.direction.down ? contentHeight : contentWidth;

                // set initially closed
                elmCache["content"].style[pos] = -dim - TransMenu.shadowSize + "px";
                elmCache["clip"].style.visibility = "hidden";

                // if *not* mac/ie 5
                if (ua.indexOf("mac") == -1 || ua.indexOf("gecko") > -1) {
                        // set background div to offset size
                        elmCache["background"].style.width = ow + "px";
                        elmCache["background"].style.height = oh + "px";
                        elmCache["background"].style.backgroundColor = TransMenu.backgroundColor;

                        // shadow left starts at offset left and is offsetHeight pixels high
                        elmCache["shadowRight"].style.left = ow + "px";
                        elmCache["shadowRight"].style.height = oh - (TransMenu.shadowOffset - TransMenu.shadowSize) + "px";
                        elmCache["shadowRight"].style.backgroundColor = TransMenu.shadowColor;

                        // shadow bottom starts at offset height and is offsetWidth - shadowOffset 
                        // pixels wide (we don't want the bottom and right shadows to overlap or we 
                        // get an extra bright bottom-right corner)
                        elmCache["shadowBottom"].style.top = oh + "px";
                        elmCache["shadowBottom"].style.width = ow - TransMenu.shadowOffset + "px";
                        elmCache["shadowBottom"].style.backgroundColor = TransMenu.shadowColor;
                }
                // mac ie is a little different because we use a PNG for the transparency
                else {
                        // set background div to offset size
                        elmCache["background"].firstChild.src = TransMenu.backgroundPng;
                        elmCache["background"].firstChild.width = ow;
                        elmCache["background"].firstChild.height = oh;

                        // shadow left starts at offset left and is offsetHeight pixels high
                        elmCache["shadowRight"].firstChild.src = TransMenu.shadowPng;
                        elmCache["shadowRight"].style.left = ow + "px";
                        elmCache["shadowRight"].firstChild.width = TransMenu.shadowSize;
                        elmCache["shadowRight"].firstChild.height = oh - (TransMenu.shadowOffset - TransMenu.shadowSize);

                        // shadow bottom starts at offset height and is offsetWidth - shadowOffset 
                        // pixels wide (we don't want the bottom and right shadows to overlap or we 
                        // get an extra bright bottom-right corner)
                        elmCache["shadowBottom"].firstChild.src = TransMenu.shadowPng;
                        elmCache["shadowBottom"].style.top = oh + "px";
                        elmCache["shadowBottom"].firstChild.height = TransMenu.shadowSize;
                        elmCache["shadowBottom"].firstChild.width = ow - TransMenu.shadowOffset;
                }
        }
        
        function initCache() {
                var menu = document.getElementById(id);
                var all = menu.all ? menu.all : menu.getElementsByTagName("*"); // IE/win doesn't support * syntax, but does have the document.all thing

                elmCache = {};
                elmCache["clip"] = menu;
                elmCache["item"] = [];
                
                for (var i = 0, elm = null; elm = all[i]; i++) {
                        switch (elm.className) {
                                case "items":
                                case "content":
                                case "background":
                                case "shadowRight":
                                case "shadowBottom":
                                        elmCache[elm.className] = elm;
                                        break;
                                case "item":
                                        elm._index = elmCache["item"].length;
                                        elmCache["item"][elm._index] = elm;
                                        break;
                        }
                }

                // hack!
                _this.elmCache = elmCache;
        }

        function initEvents() {
                // hook item mouseover
                for (var i = 0, item = null; item = elmCache.item[i]; i++) {
                        item.onmouseover = item_mouseover;
                        item.onmouseout = item_mouseout;
                        item.onclick = item_click;
                }

                // hook actuation
                if (typeof oActuator.tagName != "undefined") {
                        oActuator.onmouseover = actuator_mouseover;
                        oActuator.onmouseout = actuator_mouseout;
                }

                // hook menu mouseover
                elmCache["content"].onmouseover = content_mouseover;
                elmCache["content"].onmouseout = content_mouseout;
        }

        function highlight(oRow) {
                oRow.className = "item hover";
                if (childMenus[oRow._index]) 
                        oRow.lastChild.firstChild.src = TransMenu.dingbatOn;
        }

        function dehighlight(oRow) {
                oRow.className = "item";
                if (childMenus[oRow._index]) 
                        oRow.lastChild.firstChild.src = TransMenu.dingbatOff;
        }

        function item_mouseover() {
                if (!animating) {
                        highlight(this);

                        if (childMenus[this._index]) 
                                childMenuSet.showMenu(childMenus[this._index]);
                        else if (childMenuSet) childMenuSet.hide();
                }
        }

        function item_mouseout() {
                if (!animating) {
                        if (childMenus[this._index])
                                childMenuSet.hideMenu(childMenus[this._index]);
                        else    // otherwise child_deactivate will do this
                                dehighlight(this);
                }
        }

        function item_click() {
                if (!animating) {
                        if (_this.items[this._index].url) 
                                location.href = _this.items[this._index].url;
                }
        }

        function actuator_mouseover() {
                parentMenuSet.showMenu(_this);
        }

        function actuator_mouseout() {
                parentMenuSet.hideMenu(_this);
        }

        function content_mouseover() {
                if (!animating) {
                        parentMenuSet.showMenu(_this);
                        _this.onmouseover();
                }
        }

        function content_mouseout() {
                if (!animating) {
                        parentMenuSet.hideMenu(_this);
                }
        }

        function child_mouseover() {
                if (!animating) {
                        parentMenuSet.showMenu(_this);
                }
        }

        function child_deactivate() {
                for (var i = 0; i < childMenus.length; i++) {
                        if (childMenus[i] == this) {
                                dehighlight(elmCache["item"][i]);
                                break;
                        }
                }
        }

        function child_queue() {
                parentMenuSet.hideMenu(_this);
        }

		function child_dequeue() {
				parentMenuSet.showMenu(_this);
		}

        function toString() {
                var aHtml = [];
                var sClassName = "transMenu" + (oActuator.constructor != TransMenuItem ? " top" : "");

                for (var i = 0, item = null; item = this.items[i]; i++) {
                        aHtml[i] = item.toString(childMenus[i]);
                }

                return '<div id="' + id + '" class="' + sClassName + '">' + 
                        '<div class="content"><table class="items" cellpadding="0" cellspacing="0" border="0">' + 
                        '<tr><td colspan="2">[img]' + TransMenu.spacerGif + '[/img]</td></tr>' + 
                        aHtml.join('') + 
                        '<tr><td colspan="2">[img]' + TransMenu.spacerGif + '[/img]</td></tr></table>' + 
                        '<div class="shadowBottom">[img]' + TransMenu.spacerGif + '[/img]</div>' + 
                        '<div class="shadowRight">[img]' + TransMenu.spacerGif + '[/img]</div>' + 
		        '<div class="background">[img]' + TransMenu.spacerGif + '[/img]</div>' + 
	                '</div></div>';
        }
}


//==================================================================================================
// TransMenuSet
//==================================================================================================
// iDirection           : The direction to slide out. One of TransMenu.direction.
// iLeft                : Left pixel offset of menus from actuator
// iTop                 : Top pixel offset of menus from actuator
// iReferencePoint      : Corner of actuator to measure from. One of TransMenu.referencePoint.
//==================================================================================================
TransMenuSet.registry = [];

function TransMenuSet(iDirection, iLeft, iTop, iReferencePoint) {
        // public methods
        this.addMenu = addMenu;
        this.showMenu = showMenu;
        this.hideMenu = hideMenu;
        this.hide = hide;
        this.hideCurrent = hideCurrent;

        // initialization
        var menus = [];
        var _this = this;
        var current = null;

        this.index = TransMenuSet.registry.length;
        TransMenuSet.registry[this.index] = this;

        // method implimentations...
        function addMenu(oActuator) {
                var m = new TransMenu(oActuator, iDirection, iLeft, iTop, iReferencePoint, this);
                menus[menus.length] = m;
                return m;
        }

        function showMenu(oMenu) {
                if (oMenu != current) {
                        // close currently open menu
                        if (current != null) hide(current);        

                        // set current menu to this one
                        current = oMenu;

                        // if this menu is closed, open it
                        oMenu.show();
                }
                else {
                        // hide pending calls to close this menu
                        cancelHide(oMenu);
                }
        }

        function hideMenu(oMenu) {
                //dbg_dump("hideMenu a " + oMenu.index);
                if (current == oMenu && oMenu.isOpen) {
                        //dbg_dump("hideMenu b " + oMenu.index);
                        if (!oMenu.hideTimer) scheduleHide(oMenu);
                }
        }

        function scheduleHide(oMenu) {
                //dbg_dump("scheduleHide " + oMenu.index);
                oMenu.onqueue();
                oMenu.hideTimer = window.setTimeout("TransMenuSet.registry[" + _this.index + "].hide(TransMenu.registry[" + oMenu.index + "])", TransMenu.hideDelay);
        }

        function cancelHide(oMenu) {
                //dbg_dump("cancelHide " + oMenu.index);
                if (oMenu.hideTimer) {
						oMenu.ondequeue();
                        window.clearTimeout(oMenu.hideTimer);
                        oMenu.hideTimer = null;
                }
        }

        function hide(oMenu) {   
                if (!oMenu && current) oMenu = current;

                if (oMenu && current == oMenu && oMenu.isOpen) {
                        hideCurrent();
                }
        }

        function hideCurrent() {
				if (null != current) {
					cancelHide(current);
					current.hideTimer = null;
					current.hide();
					current = null;
				}
        }
}

//==================================================================================================
// TransMenuItem (internal)
// represents an item in a dropdown
//==================================================================================================
// sText        : The item display text
// sUrl         : URL to load when the item is clicked
// oParent      : Menu this item is a part of
//==================================================================================================
function TransMenuItem(sText, sUrl, oParent) {
        this.toString = toString;
        this.text = sText;
        this.url = sUrl;
        this.parentMenu = oParent;

        function toString(bDingbat) {
                var sDingbat = bDingbat ? TransMenu.dingbatOff : TransMenu.spacerGif;
                var iEdgePadding = TransMenu.itemPadding + TransMenu.menuPadding;
                var sPaddingLeft = "padding:" + TransMenu.itemPadding + "px; padding-left:" + iEdgePadding + "px;"
                var sPaddingRight = "padding:" + TransMenu.itemPadding + "px; padding-right:" + iEdgePadding + "px;"

                return '<tr class="item" ><td width="16" style="' + sPaddingLeft + '" >' + '[img]'+TransMenu.preImg+'[/img]</td><td nowrap style="' + sPaddingLeft + '" >' +
                        sText + '</td><td width="14" style="' + sPaddingRight + '" >' +
                        '[img]' + sDingbat + '[/img]</td></tr>';
        }
}






//=====================================================================
// Accel[erated] [an]imation object
// change a property of an object over time in an accelerated fashion
//=====================================================================
// obj  : reference to the object whose property you'd like to animate
// prop : property you would like to change eg: "left"
// to   : final value of prop
// time : time the animation should take to run
// zip	: optional. specify the zippiness of the acceleration. pick a 
//		  number between -1 and 1 where -1 is full decelerated, 1 is 
//		  full accelerated, and 0 is linear (no acceleration). default
//		  is 0.
// unit	: optional. specify the units for use with prop. default is 
//		  "px".
//=====================================================================
// bezier functions lifted from the lib_animation.js file in the 
// 13th Parallel API. [url]www.13thparallel.org[/url]
//=====================================================================

function Accelimation(from, to, time, zip) {
	if (typeof zip  == "undefined") zip  = 0;
	if (typeof unit == "undefined") unit = "px";

        this.x0         = from;
        this.x1		= to;
	this.dt		= time;
	this.zip	= -zip;
	this.unit	= unit;
	this.timer	= null;
	this.onend	= new Function();
        this.onframe    = new Function();
}



//=====================================================================
// public methods
//=====================================================================

// after you create an accelimation, you call this to start it-a runnin'
Accelimation.prototype.start = function() {
	this.t0 = new Date().getTime();
	this.t1 = this.t0 + this.dt;
	var dx	= this.x1 - this.x0;
	this.c1 = this.x0 + ((1 + this.zip) * dx / 3);
	this.c2 = this.x0 + ((2 + this.zip) * dx / 3);
	Accelimation._add(this);
}

// and if you need to stop it early for some reason...
Accelimation.prototype.stop = function() {
	Accelimation._remove(this);
}



//=====================================================================
// private methods
//=====================================================================

// paints one frame. gets called by Accelimation._paintAll.
Accelimation.prototype._paint = function(time) {
	if (time < this.t1) {
		var elapsed = time - this.t0;
	        this.onframe(Accelimation._getBezier(elapsed/this.dt,this.x0,this.x1,this.c1,this.c2));
        }
	else this._end();
}

// ends the animation
Accelimation.prototype._end = function() {
	Accelimation._remove(this);
        this.onframe(this.x1);
	this.onend();
}




//=====================================================================
// static methods (all private)
//=====================================================================

// add a function to the list of ones to call periodically
Accelimation._add = function(o) {
	var index = this.instances.length;
	this.instances[index] = o;
	// if this is the first one, start the engine
	if (this.instances.length == 1) {
		this.timerID = window.setInterval("Accelimation._paintAll()", this.targetRes);
	}
}

// remove a function from the list
Accelimation._remove = function(o) {
	for (var i = 0; i < this.instances.length; i++) {
		if (o == this.instances[i]) {
			this.instances = this.instances.slice(0,i).concat( this.instances.slice(i+1) );
			break;
		}
	}
	// if that was the last one, stop the engine
	if (this.instances.length == 0) {
		window.clearInterval(this.timerID);
		this.timerID = null;
	}
}

// "engine" - call each function in the list every so often
Accelimation._paintAll = function() {
	var now = new Date().getTime();
	for (var i = 0; i < this.instances.length; i++) {
		this.instances[i]._paint(now);
	}
}


// Bezier functions:
Accelimation._B1 = function(t) { return t*t*t }
Accelimation._B2 = function(t) { return 3*t*t*(1-t) }
Accelimation._B3 = function(t) { return 3*t*(1-t)*(1-t) }
Accelimation._B4 = function(t) { return (1-t)*(1-t)*(1-t) }


//Finds the coordinates of a point at a certain stage through a bezier curve
Accelimation._getBezier = function(percent,startPos,endPos,control1,control2) {
	return endPos * this._B1(percent) + control2 * this._B2(percent) + control1 * this._B3(percent) + startPos * this._B4(percent);
}


//=====================================================================
// static properties
//=====================================================================

Accelimation.instances = [];
Accelimation.targetRes = 10;
Accelimation.timerID = null;


//=====================================================================
// IE win memory cleanup
//=====================================================================

if (window.attachEvent) {
	var cearElementProps = [
		'data',
		'onmouseover',
		'onmouseout',
		'onmousedown',
		'onmouseup',
		'ondblclick',
		'onclick',
		'onselectstart',
		'oncontextmenu'
	];

	window.attachEvent("onunload", function() {
        var el;
        for(var d = document.all.length;d--;){
            el = document.all[d];
            for(var c = cearElementProps.length;c--;){
                el[cearElementProps[c]] = null;
            }
        }
	});
}


numero-de-menus.txt

function init()
{
if (TransMenu.isSupported()) 
  {
TransMenu.initialize();
desplegable1.onactivate=function(){document.getElementById('desplegable1').className = 'hover'; };
desplegable1.ondeactivate=function(){document.getElementById('desplegable1').className = ''; }
desplegable2.onactivate=function(){document.getElementById('desplegable2').className = 'hover'; };
desplegable2.ondeactivate=function(){document.getElementById('desplegable2').className = ''; }
desplegable3.onactivate=function(){document.getElementById('desplegable3').className = 'hover'; };
desplegable3.ondeactivate=function(){document.getElementById('desplegable3').className = ''; }
  }
}

Un saludo.
Muchas gracias. Yo esta haciendo el curso pero me tranque y me dio tanta rabia no poder pasar que lo deje pero una pregunta mas como yo agrego otra opción el la barra de navegación despliégale.

Gracias a todos
Hola, para eso has de poner en la plantilla.htlm esto..

<div id="navegacion">
<ul>
  • Sección 1
  • Sección 2
  • Sección 3
  • Sección 4
  • Sección 5



  • </div>

    Como ves hemos añadido dos secciones más y ahora hemos de modificar el archivo llamado numero-de-menus.txt

    function init()
    {
    if (TransMenu.isSupported())
    {
    TransMenu.initialize();
    desplegable1.onactivate=function(){document.getElementById('desplegable1').className = 'hover'; };
    desplegable1.ondeactivate=function(){document.getElementById('desplegable1').className = ''; }
    desplegable2.onactivate=function(){document.getElementById('desplegable2').className = 'hover'; };
    desplegable2.ondeactivate=function(){document.getElementById('desplegable2').className = ''; }
    desplegable3.onactivate=function(){document.getElementById('desplegable3').className = 'hover'; };
    desplegable3.ondeactivate=function(){document.getElementById('desplegable3').className = ''; }
    desplegable4.onactivate=function(){document.getElementById('desplegable4').className = 'hover'; };
    desplegable4.ondeactivate=function(){document.getElementById('desplegable4').className = ''; }
    desplegable5.onactivate=function(){document.getElementById('desplegable5').className = 'hover'; };
    desplegable5.ondeactivate=function(){document.getElementById('desplegable5').className = ''; }



    }
    }



    Cuidado con estos dos ultimos corchetes..

    Por último has de añadir los desplegables en el archivo definir-menus.txt

    if (TransMenu.isSupported())
    {
    var ms=new TransMenuSet(TransMenu.direction.down,1,0, TransMenu.reference.bottomLeft);

    var desplegable1 = ms.addMenu(document.getElementById('desplegable1'));
    desplegable1.addItem('Seccion 1','ruta');
    desplegable1.addItem('Seccion 2','ruta');
    var desplegable1_0 = desplegable1.addMenu(desplegable1.items[1]);
    desplegable1_0.addItem('Sub-Seccion 2.1','ruta');
    desplegable1_0.addItem('Sub-Seccion 2.2','ruta');
    desplegable1_0.addItem('Sub-Seccion 2.3','ruta');
    desplegable1.addItem('Seccion 3','ruta');
    desplegable1.addItem('Seccion 4','ruta');
    desplegable1.addItem('Seccion 5','ruta');
    var desplegable1_0 = desplegable1.addMenu(desplegable1.items[4]);
    desplegable1_0.addItem('Sub-Seccion 5.1','ruta');
    desplegable1_0.addItem('Sub-Seccion 5.2','ruta');

    var desplegable2 = ms.addMenu(document.getElementById('desplegable2'));
    desplegable2.addItem('Seccion 1','ruta');
    desplegable2.addItem('Seccion 2','ruta');
    var desplegable2_0 = desplegable2.addMenu(desplegable2.items[1]);
    desplegable2_0.addItem('Sub-Seccion 2.1','ruta');
    desplegable2_0.addItem('Sub-Seccion 2.2','ruta');
    desplegable2_0.addItem('Sub-Seccion 2.3','ruta');
    desplegable2.addItem('Seccion 3','ruta');
    desplegable2.addItem('Seccion 4','ruta');
    desplegable2.addItem('Seccion 5','ruta');
    var desplegable2_0 = desplegable2.addMenu(desplegable2.items[4]);
    desplegable2_0.addItem('Sub-Seccion 5.1','ruta');
    desplegable2_0.addItem('Sub-Seccion 5.2','ruta');

    var desplegable3 = ms.addMenu(document.getElementById('desplegable3'));
    desplegable3.addItem('Seccion 1','ruta');
    desplegable3.addItem('Seccion 2','ruta');
    var desplegable3_0 = desplegable3.addMenu(desplegable3.items[1]);
    desplegable3_0.addItem('Sub-Seccion 2.1','ruta');
    desplegable3_0.addItem('Sub-Seccion 2.2','ruta');
    desplegable3_0.addItem('Sub-Seccion 2.3','ruta');
    desplegable3.addItem('Seccion 3','ruta');
    desplegable3.addItem('Seccion 4','ruta');
    desplegable3.addItem('Seccion 5','ruta');
    var desplegable3_0 = desplegable3.addMenu(desplegable3.items[4]);
    desplegable3_0.addItem('Sub-Seccion 5.1','ruta');
    desplegable3_0.addItem('Sub-Seccion 5.2','ruta');

    var desplegable4 = ms.addMenu(document.getElementById('desplegable4'));
    desplegable4.addItem('Seccion 1','ruta');
    desplegable4.addItem('Seccion 2','ruta');
    var desplegable4_0 = desplegable4.addMenu(desplegable4.items[1]);
    desplegable4_0.addItem('Sub-Seccion 2.1','ruta');
    desplegable4_0.addItem('Sub-Seccion 2.2','ruta');
    desplegable4_0.addItem('Sub-Seccion 2.3','ruta');
    desplegable4.addItem('Seccion 3','ruta');
    desplegable4.addItem('Seccion 4','ruta');
    desplegable4.addItem('Seccion 5','ruta');
    var desplegable4_0 = desplegable4.addMenu(desplegable4.items[4]);
    desplegable4_0.addItem('Sub-Seccion 5.1','ruta');
    desplegable4_0.addItem('Sub-Seccion 5.2','ruta');


    var desplegable5 = ms.addMenu(document.getElementById('desplegable5'));
    desplegable5.addItem('Seccion 1','ruta');
    desplegable5.addItem('Seccion 2','ruta');
    var desplegable5_0 = desplegable5.addMenu(desplegable5.items[1]);
    desplegable5_0.addItem('Sub-Seccion 2.1','ruta');
    desplegable5_0.addItem('Sub-Seccion 2.2','ruta');
    desplegable5_0.addItem('Sub-Seccion 2.3','ruta');
    desplegable5.addItem('Seccion 3','ruta');
    desplegable5.addItem('Seccion 4','ruta');
    desplegable5.addItem('Seccion 5','ruta');
    var desplegable5_0 = desplegable5.addMenu(desplegable5.items[4]);
    desplegable5_0.addItem('Sub-Seccion 5.1','ruta');
    desplegable5_0.addItem('Sub-Seccion 5.2','ruta');




    TransMenu.renderAll();
    }


    Al menos eso espero...je je, un saludo.