Mundo Web
manuales - recursos - gráficos - programación...

Home - WebScript - CapasCajas 1 - 1 - 2 - 3

Cajas 1 (II)
por Luciano Moreno, del departamento de diseño web de BJS Software.


Opción en JavaScript.-

Vamos pués a crearnos un contenedor principal en el que vamos a incluir cada una de las 3 partes que van a formar nuestra página, situando encima de él 3 pestañas que van a funcionar como elementos de menú.

La idea es que inicialmente se mostrará la capa 1, que contendrá la primera parte de la información a mostrar, quedando las otras dos secciones ocultas. Paralelamente a esto, situaremos encima 6 capas que van a formas las pestañas, 2 por cada opción de menú, una para el estado activo y otra para el inactivo, conteniendo cada una de estas últimas un enlace que llamará a la función encargada de mostrar y ocultar las capas correspondientes.

El código completo, usando JavaScript cross-browser, es el siguiente, que comentamos luego:

<html>
<head>
 <title>Untitled</title>
    <style type="text/css"> 
   .enlace{font-size:11px;font-family:Verdana,Helvetica;color:#006600;text-decoration:none;}
   #ventana{
            background-color:white;layer-background-color:white;
            width:450px;height:250px;clip:rect(0,450,250,0);
            position:absolute;left:75px;top:50px;
           }
   .caja   {
            background-color:#006600;layer-background-color:#006600;
            width:450px;height:230px;clip:rect(0,450,230,0);
            position:absolute;left:0px;top:18px;z-index:1;
            font-size:11px;font-family:Verdana,Helvetica;color:black;
            padding-left:10px;padding-right:10px;padding-top:20px;padding-bottom:20px;
           }
   .fondo{
            background-color:white;layer-background-color:white;
            width:448px;height:228px;clip:rect(0,448,228,0);
            position:absolute;left:1px;top:1px;z-index:1;
            font-size:11px;font-family:Verdana,Helvetica;color:black;
            padding-left:10px;padding-right:10px;padding-top:20px;padding-bottom:20px;
           }
   .visto  {
            background-color:#006600;layer-background-color:#006600;
            width:150;height:19;clip:rect(0 150 19 0);
            position:absolute;top:0;z-index:3;padding-top:1px;
            font-size:11px;font-family:Verdana,Helvetica;color:black;text-align:center;           
           }
   .oculto{
           background-color:white;layer-background-color:white;
           width:150;height:18;clip:rect(0 150 18 0);
           position:absolute;top:0;z-index:3;padding-top:2px;text-align:center;
          }
   .fondo2{
           background-color:white;layer-background-color:white;
           width:148px;height:18px;clip:rect(0,148,18,0);
           position:absolute;top:1px;left:1px;
           font-size:11px;font-family:Verdana,Helvetica;color:black;text-align:center;
          }
   #menu10{left:0;}
   #menu20{left:150;visibility:hidden;}
   #menu30{left:300;visibility:hidden;}  
   #menu11{visibility:hidden;left:0;}
   #menu21{left:150;}
   #menu31{left:300;}
   #caja1{visibility:visible;}
   #caja2{visibility:hidden;}
   #caja3{visibility:hidden;} 
 </style>
 
 <SCRIPT language="JavaScript">
<!--
 n4 = (document.layers)? true:false
 ie = (document.all)? true:false
 n6 = (document.getElementById)? true:false

 function show(id)
    {
     if (n4)
            document.ventana.document.layers[id].visibility = "show"
     else if (ie)
            document.all[id].style.visibility = "visible"
        else if (n6)
            document.getElementById(id).style.visibility = "visible"
 }
   
 function hide(id)
    {
 if (n4)
        document.ventana.document.layers[id].visibility = "hide"
 else if (ie)
        document.all[id].style.visibility = "hidden"
    else if (n6)
            document.getElementById(id).style.visibility = "hidden"
 }
   
    function Menu1()
    {
        show('menu10');
        show('menu21');
        show('menu31');
        hide('menu11');
        hide('menu20');
        hide('menu30');
        show('caja1');
        hide('caja2');
        hide('caja3');
    }
    function Menu2()
    {
        show('menu11');
        show('menu20');
        show('menu31');
        hide('menu21');
        hide('menu10');
        hide('menu30');
        show('caja2');
        hide('caja1');
        hide('caja3');
    }
    function Menu3()
    {
        show('menu11');
        show('menu21');
        show('menu30');
        hide('menu10');
        hide('menu20');
        hide('menu31');
        hide('caja1');
        hide('caja2');
        show('caja3');
    }
//-->
</SCRIPT>
</head>

<body>
<div id="ventana">
<div id="caja1" class="caja"><div class="fondo">Contenido de la caja correspondiente al menu 1</div></div>
<div id="caja2" class="caja"><div class="fondo">Contenido de la caja correspondiente al menu 2</div></div>
<div id="caja3" class="caja"><div class="fondo">Contenido de la caja correspondiente al menu 3</div></div>
<div id="menu10" class="visto"><div class="fondo2">menu 1</div></div>
<div id="menu11" class="oculto"><A class="enlace" href="#" onClick="Menu1()">menu 1</A></div>
<div id="menu20" class="visto"><div class="fondo2">menu 2</div></div>
<div id="menu21" class="oculto"><A class="enlace" href="#" onClick="Menu2()">menu 2</a></div>
<div id="menu30" class="visto"><div class="fondo2">menu 3</div></div>
<div id="menu31" class="oculto"><A class="enlace" href="#" onClick="Menu3()">menu 3</a></div>
</div>
</body>
</html>

Y el resultado podéis verlo en esta ventana.

Consideraciones:

1) Definimos un contenedor general padre, ventana, dentro del cual vamos a colocar los demás elementos, y que nos va a permitir posicionar con comodidad todo el conjunto.

2) Dentro de él situamos las cajas que van a contener los datos a presentar, caja1, caja2 y caja3, situando dentro de cada una de ellas otra capa, fondo, que nos va a servir para establecer un borde de 1 pixel de color verde alrededor de las cajas.

3) Para implementar las pestañas de menú superior creamos 6 capas prácticamente iguales, 3 para el estado activo (menu10, menu20 y menu30), dentro de las cuales situamos otra capa, con clase fondo2, para crear el borde de 1 pixel, y 3 para el estado inactivo (menu11, menu21 y menu31), que no llevan borde y tienen el color del fondo de la página.

4) Una vez creadas y posicionadas las capas nos metemos con el código JavaScript. Establecemos unas variables globales para manejar cada navegador (ie, n4 y n6), y establecemos primero dos funciones generales, show() e hide(), cuya misión va a ser mostrar u ocultar una capa genérica que reciben como argumento. Esta función debe ser compatible con los 3 navegadores, por lo que accedemos a las capas de forma diferente según el que use nuestro visitante.

5) El paso final es crear una función concreta para cada enlace de menú, que se va a encargar de mostrar y ocultar las capas adecuadas en cada caso.

Creo que si lo estudiáis bien no tendréis ningún problema en entenderlo.

 

anterior
siguiente

Home - WebScript - CapasCajas 1 - 1 - 2 - 3