Tabs

Autor Original:Mike Hall URL ORIGINAL : http://www.brainjar.com/css/tabs/ TÍTULO ORIGINAL : Tabs Traducción al castellano:Pedro Palazón Candel URL CASTELLANO : http://kusor.net/traducciones/brainjar.es/tabs1.es.html

Tabs

Ver la página demo para obtener la versión final del código.

Posicionando las Solapas y el Contenido

Primero, vamos a combinar simplemente estos dos componentes colocando los HTML juntos.

<div class="tabArea">
<a class="tab">Tab A</a>
<a class="tab">Tab B</a>
<a class="tab activeTab">Tab C</a>
<a class="tab">Tab D</a>
</div>
<div class="tabMain">
<div class="tabIframeWrapper">
<iframe class="tabContent" src="sample.html"
marginheight="8" marginwidth="8" frameborder="0"></iframe>
</div>
</div>

Esto nos dará el resultado que se muestra debajo.

Tab A Tab B Tab C Tab D

El problema obvio está donde la parte de abajo de las solapas se encuentra con la parte superior de la capa DIV principal. Tanto para IE como para Netscape, las solapas se superponen un poco con la capa DIV de contenido the content DIV, cubriendo el borde.

El efecto deseado es es hacer que el borde superior de la capa DIV coincida con el borde de la solapa activa, para que aparenten ser una sóla, mientras que las otras solapas deberían aparentar estar detrás de ellas.

Componiendo los Elementos

La solución es convertir las solapas y la capa DIV principal en elementos posicionados. Entonces se superpondrán correctamente y la propiedad de estilo z-index podrá ser utilizada para situar una por encima o por debajo de las otras.

Para lograr esto,la regla position:relative; es agregada a las clases de estilo definidas previamente. La propiedad de estilo top es fijada para las solapas, haciendo que éstas se superpongan a la capa DIV principal justamente lo necesario y la propiedad z-index se fija para establecer el orden de apilamiento apropiado.

a.tab {
background-color: #f0f0f0;
border: 1px solid #000000;
border-bottom-width: 0px;
padding: 2px 1em 2px 1em;
position: relative;
text-decoration: none;
top: -1px;
z-index: 100;
}

a.tab.activeTab {
z-index: 102;
}

div.tabMain {
background-color: #c0c0c0;
border: 1px solid #000000;
padding: 1em;
position: relative;
z-index: 101;
}

El resultado puede verse debajo. Nótese como el color de fondo de la solapa activa cubre el borde superior de la capa DIV de contenido mientras que sus bordes laterales se extienden hacia abajo lo suficiente como para tocar la parte superior de la capa DIV.

Tab A Tab B Tab C Tab D

La solapa activa tiene un z-index más alto, por lo que aparenta estar por encima de la capa de contenido DIV. Dicha DIV, por su parte, tiene un z-index más alto que las solapas normales por lo que éstas aparentan estar por debajo de ella. El resultado final provoca que el borde de la solapa activa y el de la capa DIV principal aparenten ser una línea continua o un filo serpenteante alrededor de dichos elementos mientras que las solapas inactivas colocadas detrás de ellas.

Para clarificar un poco ésto, aquí está la misma composición pero con el color de fondo de la solapa activa modificado y con su borde inferior fijado para que puedas ver cómo está posicionado.

Tab A Tab B Tab C Tab D

La posición top de la clase "tabs" puede necesitar ser ajustada, hacia arriba o hacia abajo, si otros valores de estilo como el ancho del borde o padding son modificados en otros estilos.

Terminando la Presentación

El último paso es colocar el lote completo en otra etiqueta DIV.

<div>
<div class="tabArea">
<a class="tab">Tab A</a>
<a class="tab">Tab B</a>
<a class="tab activeTab">Tab C</a>
<a class="tab">Tab D</a>
</div>
<div class="tabMain">
<div class="tabIframeWrapper">
<iframe class="tabContent" src="sample.html"
marginheight="8" marginwidth="8" frameborder="0"></iframe>
</div>
</div>
</div>

Esto te permite, por ejemplo, fijar un ancho fijo para la presentación asignando e estilo simplemente para la etiqueta DIV más externa. Podrías hacer también que flotase la composición entera a un lado o posicionarla absolutamente.

Una cosa en la que tenemos que fijarnos, de cualquier modo, es en dejar espacio suficiente para colocar las solapas de modo que éstas no se superpongan.

Enlazando las solapas

Hasta ahora en éstos ejemplos, las solapas no tenían fijado un link a ninguna parte. Ésto es fácil de solucionar.

En orden de hacer aparecer nuevo contenido en la composición con solapas, se le ha dado un nombre al IFRAME, los links tienen sus atributos HREF y TARGET fijados para dicho frame.

<div>
<div class="tabArea">
<a class="tab" href="a.html" target="myIframe">Tab A</a>
<a class="tab" href="b.html" target="myIframe">Tab B</a>
<a class="tab" href="c.html" target="myIframe">Tab C</a>
<a class="tab" href="d.html" target="myIframe">Tab D</a>
</div>
<div class="tabMain">
<div class="tabIframeWrapper">
<iframe class="tabContent" name="myIframe" src="c.html"
marginheight="8" marginwidth="8" frameborder="0"></iframe>
</div>
</div>
</div>

Nótese que el nombre de clase "activeTab" ha sido eliminado. Vamos a fijar la solapa activa usando algo de JavaScript del que nos ocuparemos enseguida. Por ahora, pruébalo.

Ahora puedes hacer click en cualquier solapa y cargar la página correspondiente en el área de contenido. La única pieza perdida es la solapa activa. Ésta debería cambiar cuando hagas click en las diferentes solapas.

Previo | Siguiente

BrainJar.com · ©1999-2002 by Mike Hall 
Publicado con autorización explícita del autor.
Puedes encontrar más artículos y tutoriales relacionados con dhtml en esta web.