Foros del Web » Creando para Internet » CSS »

Bootstrap, link to tabs

Estas en el tema de Bootstrap, link to tabs en el foro de CSS en Foros del Web. Buenas, Resulta que he creado un "TAB" del bootstrap. (Son como unas lenguetas, donde cada una de ellas tiene una sección diferente) Me gustaría hacer ...
  #1 (permalink)  
Antiguo 12/01/2016, 06:27
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 3 meses
Puntos: 0
Pregunta Bootstrap, link to tabs

Buenas,
Resulta que he creado un "TAB" del bootstrap.
(Son como unas lenguetas, donde cada una de ellas tiene una sección diferente)

Me gustaría hacer un botón, para que se mostrara un TAB determinado (apartado) al pulsarlo.

1. Es posible mediante html o javascript?
2. Alguien me podría poner un ejemplo?
3. Gracias.


Ejemplo.
1. Le doy al "boton1", y me muestra el "tab1"
2. Le doy al "boton2", y me muestra el "tab2"


Hago un copiar y pegar del código genérico...

<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="tabbable" id="tabs-155176">
<ul class="nav nav-tabs">
<li>
<a href="#panel-832037" data-toggle="tab">Section 1</a>
</li>
<li class="active">
<a href="#panel-566127" data-toggle="tab">Section 2</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane" id="panel-832037">
<p>
I'm in Section 1.
</p>
</div>
<div class="tab-pane active" id="panel-566127">
<p>
Howdy, I'm in Section 2.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
  #2 (permalink)  
Antiguo 12/01/2016, 06:51
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Bootstrap, link to tabs

Hola. Desde mi punto de vista esto no tiene sentido, ya que las tab propiamente hacen esta función, es decir, cuando pulsas en cada tab se muestra.

Para hacerlo como lo necesitas lo primero que debes saber es que el componente de Bootstrap añade la clase .active tanto al elemento <li> (que es el título de la pestaña) como al div con el que está relacionada esa pestaña.


Código HTML:
Ver original
  1. <ul id="tab" class="nav nav-tabs" role="tablist">
  2.     <li>
  3.         <a id="tab1-tab" aria-controls="tab1" data-toggle="tab" role="tab" href="#tab1" aria-expanded="true">tab1</a>
  4.   </li>
  5.     <li>
  6.         <a id="tab2-tab" aria-controls="tab2" data-toggle="tab" role="tab" href="#tab2" aria-expanded="true">tab2</a>
  7.     </li>
  8.     <li>
  9.         <a id="tab3-tab" aria-controls="tab3" data-toggle="tab" role="tab" href="#tab3" aria-expanded="true">tab3</a>
  10.     </li>
  11. </ul>
  12. <div id="tabContent" class="tab-content">
  13.     <div id="tab1" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  14.         Contenido tab1
  15.     </div>
  16.     <div id="tab2" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  17.         Contenido tab2
  18.     </div>
  19.     <div id="tab3" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  20.         Contenido tab3
  21.     </div>
  22. </div>

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var $tabsLinks  = $("#tab li a"); // Obtenemos todos los tag a que lanzan la apertura de un panel tab
  3.     var $tabsPanels = $("#tabContent > div"); // Estos son los paneles que contienen el contenido que están relacionados con cada tab, podemos relacionarlos nosotros mediante el atributo de a aria-controls
  4.  
  5.         // Capturamos el evento click de todos los a(tabs)
  6.         $tabsLinks.on ('click', function (event) {
  7.             event.preventDefault();
  8.  
  9.             // Antes de hacer nada, eliminamos la clase active de cualquier elemento a o div que esté dentro de $tabsLinks o $tabsPanels
  10.             // es algo drástico y se puede optimizar almacenando en una variable el ultimo elemento activo
  11.             // por rapidez lo hago así
  12.             $tabsLinks.removeClass("active");
  13.             tabsPanels.removeClass("active");
  14.  
  15.             // Obtenemos el atributo aria-controls del elemento a que ha sido pulsado.
  16.             // Ya tenemos el div que vamos a mostra, en este caso puede ser: tab1, tab2 o tab3
  17.             var pressedElement = $(this).attr ('aria-controls');
  18.  
  19.             // Entonces, ahora solo buscamos el div que tiene ese id y le añadimos la clase active
  20.             // y luego, se la añadimos también al elemento a que ha sido pulsado.
  21.             // El añadirle ahora la clase al elemento a en vez de hacerlo antes es por hacerlo mas legible el código
  22.           $("#" + pressedElement).addClass ("active");
  23.             $(this).addClass("active");
  24.         });
  25. </script>
  #3 (permalink)  
Antiguo 12/01/2016, 08:15
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Bootstrap, link to tabs

Me quedo sorprendido con la pronta respuesta, gracias.

Es correcto, busco justamente lo que que comentas, hacer un link al tab a partir de un botón.

Soy muy novato, por ejemplo este sería mi botón normal:
<a href="AQUI LA URL"><button><font color="#cc0000"><strong>AQUI EL TEXTO</strong></font></button>


Como quedaría dicho botón, si cuando pulsaras, fueras al tab2 ?
que siguiendo mi ejemplo sería el "#panel-566127"


Podrías fusionarlo?
Ya que a partir de tu explicación me lio un poco.
He hecho algunas pruebas con lo que comentas, pero no logro que funcione.

Soy muy novato, pido mil disculpas.
Gracias!!!!
  #4 (permalink)  
Antiguo 12/01/2016, 09:17
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Bootstrap, link to tabs

Bien, entendido lo anterior empezamos otra cosa.

Ahora tenemos tres botones que son los que abren los paneles, en vez de las tabs por defecto de Bootrap.

Así que ahora tenemos tres botones dentro de un div.
Código HTML:
Ver original
  1. <ul id="tab" class="nav nav-tabs" role="tablist">
  2.         <li>
  3.             <a id="tab1-tab" aria-controls="tab1" data-toggle="tab" role="tab" href="#tab1" aria-expanded="true">tab1</a>
  4.       </li>
  5.         <li>
  6.             <a id="tab2-tab" aria-controls="tab2" data-toggle="tab" role="tab" href="#tab2" aria-expanded="true">tab2</a>
  7.         </li>
  8.         <li>
  9.             <a id="tab3-tab" aria-controls="tab3" data-toggle="tab" role="tab" href="#tab3" aria-expanded="true">tab3</a>
  10.         </li>
  11.     </ul>
  12.     <div id="tabContent" class="tab-content">
  13.         <div id="tab1" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  14.             Contenido tab1
  15.         </div>
  16.         <div id="tab2" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  17.             Contenido tab2
  18.         </div>
  19.         <div id="tab3" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  20.             Contenido tab3
  21.         </div>
  22.     </div>
  23.   <div class="buttons-tab-nav">
  24.        <a href="#" class="btn btn-default " tab-to-open="tab1">Abrir tab1</a>
  25.        <a href="#" class="btn btn-default " tab-to-open="tab2">Abrir tab2</a>
  26.        <a href="#" class="btn btn-default " tab-to-open="tab3">Abrir tab3</a>
  27.   </div>


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.         var $tabButtons = $('.buttons-tab-nav > a'); // Aquí tenemos almacenados los tres botones a
  3.         var $tabsLinks  = $("#tab li a"); // Obtenemos todos los tag a que lanzan la apertura de un panel tab
  4.         var $tabsPanels = $("#tabContent > div"); // Estos son los paneles que contienen el contenido que están relacionados con cada tab, podemos relacionarlos nosotros mediante el atributo de a aria-controls
  5.      
  6.             // Capturamos el evento click de todos los a(botones)
  7.             $tabButtons.on ('click', function (event) {
  8.                 event.preventDefault();
  9.      
  10.                 // Antes de hacer nada, eliminamos la clase active de cualquier elemento a o div que esté dentro de $tabsLinks o $tabsPanels
  11.                 // es algo drástico y se puede optimizar almacenando en una variable el ultimo elemento activo
  12.                 // por rapidez lo hago así
  13.                 $tabsLinks.removeClass("active");
  14.                 $tabsPanels.removeClass("active");
  15.      
  16.                 // Obtenemos el atributo tab-to-open del elemento a que ha sido pulsado.
  17.                 // Ya tenemos el div que vamos a mostra, en este caso puede ser: tab1, tab2 o tab3
  18.                 var pressedElement = $(this).attr ('tab-to-open');
  19.      
  20.                 // Entonces, ahora solo buscamos el div que tiene ese id y le añadimos la clase active
  21.                 // y luego, se la añadimos también al elemento a que ha sido pulsado.
  22.                 // El añadirle ahora la clase al elemento a en vez de hacerlo antes es por hacerlo mas legible el código
  23.                 $("#" + pressedElement).addClass ("active");     // Activamos pestaña
  24.                 $("#" + pressedElement + "-tab").addClass ("active"); // Activamos panel de pestaña
  25.             });
  26.     </script>
  #5 (permalink)  
Antiguo 12/01/2016, 10:05
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Bootstrap, link to tabs

Buenas, he probado de copiar y pegarlo en mi página.
Salen los 3 botones y los 3 tabs.

Pero cuando clico en los botones, no se abren los tabs...
  #6 (permalink)  
Antiguo 12/01/2016, 10:07
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Bootstrap, link to tabs

Te lo he escrito a pelo sin probarlo. Debería abrir consola y ver que está fallando, así aprenderías como funciona.

Saludos!
  #7 (permalink)  
Antiguo 13/01/2016, 08:51
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Bootstrap, link to tabs

Bufff, me estoy volviendo loco xDDD jeje, probando la he liado más, no lo consigo.
De todas, formas, gracias por todo el código.
Si algún día te puedes entretener en buscar el error, me harías un gran favor.

Muchas gracias,
Saludos.
  #8 (permalink)  
Antiguo 13/01/2016, 10:48
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Bootstrap, link to tabs

Parse error: syntax error, unexpected ‘<‘ in /homepages/14/d603398986/htdocs/wp-content/plugins/insert-php/insert_php.php(48) : eval()’d code on line 2

He probado de poner código php y lo ejecuta correctamente.
El plugin no es.

Etiquetas: bootstrap, links, tabs
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 07:41.