Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Un regalito: clase de pestañas(Tabs) en prototype

Estas en el tema de Un regalito: clase de pestañas(Tabs) en prototype en el foro de Frameworks JS en Foros del Web. Con la particularidad que te permite crear varias pestañas en la misma página si se desea, cosa que no se podia hacer con los ejemplos ...
  #1 (permalink)  
Antiguo 01/10/2010, 20:56
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 7 meses
Puntos: 0
Un regalito: clase de pestañas(Tabs) en prototype

Con la particularidad que te permite crear varias pestañas en la misma página si se desea, cosa que no se podia hacer con los ejemplos y librerias existentes en la web (al menos las que encontré).
Compatible con: firefox, IE, opera, chrome.

Por allí alguien dirá, Dreamweaver te permite crear Tab`s de manera sencilla, pero el problema con esos tabs es que no funciona correctamente en IE cuando creas varias grupos de tabs.

Se requiere prototype, el codigo falta refinar, pero funciona muy bien. Se agradecen sugerencias para perfeccionarlo:

Tab.js
Cita:
//TabMulti v.1.0.0

function Tabs(Nombre,Capas) {
this.TabNom = Nombre;
this.TabCapas = Capas;
this.DivAnt='';
this.TabAnt='';

Tabs.prototype.Capas = function() {
this.as=$$('div#'+this.TabNom+' li.TabOff'); //obtenemos el id de las listas

this.NumTab=this.TabCapas.length; //calculamos el nro de pestañas
for(it=0;it<this.NumTab;it++){
$(this.TabCapas[it]).style.display='none'; //ocultamos las capas detalle
}
//pintamos la primera pestaña
this.MuestraTab(this.TabCapas[0],this.as[0]); //Ejecutamos la funcion q muestrala capa y la pestaña activa
}

Tabs.prototype.MuestraTab = function(CapaT,Tab) {
this.CapaT=CapaT;
this.Tab=Tab;

if(this.DivAnt!=''){
$(this.DivAnt).style.display='none'; //ocultamos la capa anterior
Element.removeClassName(this.TabAnt, "TabOn"); //quitamos el estilo a la pestaña anterior ON
Element.addClassName(this.TabAnt, "TabOff"); //para luego ocultarlo añadiendo el estilo OFF
}
//mostramos la capa con sus estilos
Element.removeClassName(this.Tab, "TabOff");
Element.addClassName(this.Tab, "TabOn"); //agregamos el estilo ON a la pestaña activa
$(this.CapaT).style.display='inline'; //mostramos la capa

this.DivAnt=this.CapaT;
this.TabAnt=this.Tab;
}
}

estilo.css
Cita:
@charset "utf-8";

.Tab{
padding:5px;
}

.HeadTab {
height:25px;
margin-bottom:0
}

.BodyTab {
padding:5px;
background-color: #F5F4EF;
border: 1px solid #666;
}


.TabOn {
float:left;
padding:5px;
background-color: #F5F4EF;
cursor:pointer;
border-top-width: 1px;
border-right-width: 1px;
border-left-width: 1px;
border-top-style: solid;
border-right-style: solid;
border-left-style: solid;
border-top-color: #666;
border-right-color: #666;
border-left-color: #666;
margin-left:2px;
margin-right:2px;
list-style-type: none;
}

.TabOff {
float:left;
padding:5px;
background-color: #CCC;
cursor:pointer;
border-top-width: 1px;
border-right-width: 1px;
border-left-width: 1px;
border-top-style: solid;
border-right-style: solid;
border-left-style: solid;
border-top-color: #666;
border-right-color: #666;
border-left-color: #666;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: #666;
margin-left:2px;
margin-right:2px;
list-style-type: none;
}

Prueba.html

Cita:
//descargar prototype desde aqui: http://www.prototypejs.org/
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="Tab.js"></script>

<link href="estilo.css" media="all" rel="stylesheet" type="text/css" />




<div id="Tabs1" class="Tab">
<ul class="HeadTab">
<li class="TabOff" onClick="CambiaTab('universo',this);">gonzo</li>
<li class="TabOff" onClick="CambiaTab('dos',this);">fozzie</li>
<li class="TabOff" onClick="CambiaTab('tres',this);">statler</li>
<li class="TabOff" onClick="CambiaTab('cuatro',this);">waldorf</li>
</ul>
<div class="BodyTab">
<div id="universo">
<p>veamos que sucede en esta primera </p>
<p>capa que existe en esta pestaa</p>
<p>priemra pesta&ntilde;a</p>
</div>
<div id="dos">
cccccccccccccccccc
<p>segunda pesta&ntilde;a</p>
</div>
<div id="tres">
bbbbbbbbbbbbbbbbbb
<p>tercera pesta&ntilde;a</p>
</div>
<div id="cuatro">
mmmmmmmmmmmmmmmmm
<p>
<label>
<input name="Nombre" type="text" id="Nombre" value="wewewe" />
</label>
</p>
<p>cuerta pesta&ntilde;a</p>
</div>
</div>
</div>

<br />

<div id="Noticias" class="Tab">
<ul class="HeadTab">
<li class="TabOff" onClick="CambiaTab2('nota1',this);">gonzo</li>
<li class="TabOff" onClick="CambiaTab2('nota2',this);">fozzie</li>
<li class="TabOff" onClick="CambiaTab2('nota3',this);">statler</li>
</ul>
<div class="BodyTab">
<div id="nota1">
asdasdasdasdsadsd
</div>
<div id="nota2">
de esta noche entre el Deportivo Quito
</div>
<div id="nota3">
Los rimenses se pone arriba en el marcador gracias a Andy Pando.
</div>
</div>
</div>


<script type="text/javascript">
var Pest = new Tabs('Tabs1',["universo", "dos", "tres","cuatro"]);
Pest.Capas();
CambiaTab=function(Nom,IdTab){
Pest.MuestraTab(Nom,IdTab);
}


var Pest2 = new Tabs('Noticias',["nota1", "nota2", "nota3"]);
Pest2.Capas();
CambiaTab2=function(Nom,IdTab){
Pest2.MuestraTab(Nom,IdTab);
}
</script>
Estoy abierto a sugerencias.
Sdos.
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com

Última edición por kotosh; 01/10/2010 a las 21:14
  #2 (permalink)  
Antiguo 02/10/2010, 10:06
Avatar de tredio  
Fecha de Ingreso: noviembre-2008
Ubicación: Carabobo
Mensajes: 466
Antigüedad: 16 años, 1 mes
Puntos: 66
Respuesta: Un regalito: clase de pestañas(Tabs) en prototype

colocalo en algun servidor para probarlo, y te cuento. saludos.
__________________
Extension Google Chrome
dar las gracias no cuesta nada :D
  #3 (permalink)  
Antiguo 04/10/2010, 13:53
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 7 meses
Puntos: 0
Respuesta: Un regalito: clase de pestañas(Tabs) en prototype

Aquí la URL con código actualizado:
http://www.sistemass.com/desarrollo/

Sdos.
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #4 (permalink)  
Antiguo 04/10/2010, 14:49
Avatar de tredio  
Fecha de Ingreso: noviembre-2008
Ubicación: Carabobo
Mensajes: 466
Antigüedad: 16 años, 1 mes
Puntos: 66
Respuesta: Un regalito: clase de pestañas(Tabs) en prototype

oye bastante bien, todos los aportes son agradecidos.
__________________
Extension Google Chrome
dar las gracias no cuesta nada :D

Etiquetas: clase, prototype
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:10.