Tabs, menú de contenidos con pestañas. Versión CSS
Sistema de navegación por pestañas (Tabs) con la pseudoclase :checked y bastante CSS.
Seguro conocerás este sistema de pestañas, que nos permite mostrar de manera alternativa distintos contenidos en un mismo espacio.
Hay distintas versiones como con jQuery, o utilizando CSS, más específicamente la pseudoclase :target.
Aquí veremos como obtener un resultado similar, pero utilizando la pseudoclase :checked.
Comencemos con la estructura.
Ahora el CSS que será el mecanismo de este sistema. Es largo, así que te tendrás que tomar tiempo por si quieres personalizarlo a tu gusto.
Aquí tienes un ejemplo de cómo quedaría el menú.
Hay distintas versiones como con jQuery, o utilizando CSS, más específicamente la pseudoclase :target.
Aquí veremos como obtener un resultado similar, pero utilizando la pseudoclase :checked.
Comencemos con la estructura.
<div id="contenedor"> <input id="tab-1" type="radio" name="radio-set" class="tab-selector-1" checked="checked" /> <label for="tab-1" class="tab-label-1">Pestaña1</label> <input id="tab-2" type="radio" name="radio-set" class="tab-selector-2" /> <label for="tab-2" class="tab-label-2">Pestaña2</label> <input id="tab-3" type="radio" name="radio-set" class="tab-selector-3" /> <label for="tab-3" class="tab-label-3">Pestaña3</label> <input id="tab-4" type="radio" name="radio-set" class="tab-selector-4" /> <label for="tab-4" class="tab-label-4">Pestaña4</label> <div class="content"> <div class="content-1"> Contenido1 </div> <div class="content-2"> Contenido2 </div> <div class="content-3"> Contenido3 </div> <div class="content-4"> Contenido4 </div> </div> </div>
Ahora el CSS que será el mecanismo de este sistema. Es largo, así que te tendrás que tomar tiempo por si quieres personalizarlo a tu gusto.
#contenedor { margin: 40px auto; width: 750px; /* Ancho del contenedor */ box-sizing: border-box; -moz-box-sizing: border-box; }
#contenedor input { height: 32px; visibility: hidden; }
#contenedor label { float: left; cursor: pointer; font-size: 15px; /* Tamaño del texto de las pestañas */ line-height: 40px; height: 40px; padding: 0 20px; display: block; color: #888; /* Color del texto de las pestañas */ text-align: center; border-radius: 5px 5px 0 0; background: #eee; /* Fondo de las pestañas */ margin-right: 5px; }
#contenedor input:hover + label { background: #ddd; /* Fondo de las pestañas al pasar el cursor por encima */ color: #666; /* Color del texto de las pestañas al pasar el cursor por encima */ }
#contenedor input:checked + label { background: #FFDA91; /* Fondo de las pestañas al presionar */ color: #444; /* Color de las pestañas al presionar */ z-index: 6; line-height: 45px; height: 45px; position: relative; top: -5px; -webkit-transition: .1s; -moz-transition: .1s; -o-transition: .1s; -ms-transition: .1s; }
.content { background: #FFDA91; /* Fondo del contenido */ position: relative; width: 100%; height: 350px; /* Alto del contenido */ padding: 30px; z-index: 5; border-radius: 0 5px 5px 5px; }
.content div { position: absolute; z-index: -100; opacity: 0; transition: all linear 0.1s; }
#contenedor input.tab-selector-1:checked ~ .content .content-1, #contenedor input.tab-selector-2:checked ~ .content .content-2, #contenedor input.tab-selector-3:checked ~ .content .content-3, #contenedor input.tab-selector-4:checked ~ .content .content-4 { z-index: 100; opacity: 1; -webkit-transition: all ease-out 0.2s 0.1s; -moz-transition: all ease-out 0.2s 0.1s; -o-transition: all ease-out 0.2s 0.1s; -ms-transition: all ease-out 0.2s 0.1s; }
Aquí tienes un ejemplo de cómo quedaría el menú.
La primer pestaña ya se encuentra activada, por lo cual esto es lo primero que verán los lectores.
...y cualquier otra cosa. Eso es todo, espero que te sea útil. Por cierto, esto es una adaptación de un tutorial de Codrops.
Muy buen post, excelente!
ResponderEliminarGracias, Carlos :D
EliminarBuena entrada man, ¿porque no usas SyntaxHighlighter?, te coparias con el código xDD
ResponderEliminarYa lo había pensado, Andres. Pero por ahora me siento cómodo así :) Quizá luego lo pueda probar. Gracias por pasarte, adios.
EliminarSólo un pequeño apunte, Lucas:
ResponderEliminarTe olvidaste del empeño de los vídeos por no respetar el z-index, a no ser que declares el atributo v-mode
Por si a alguien le es de ayuda o quiere ampliar un poco la info sobre z-index
Un saludo
Gracias Kseso por la info. En verdad es algo que hay que tener en cuenta. Saludos :D
EliminarMe gustaron mucho estas tabs y son muy personalizables a veces deseo poner 3 videos en un post y con estas tabs se veria muy ordenado pero el problema que tengo es.. y como lo pongo? osea donde va el css y eso? o todo va dentro del post? espero una respuesta Gracias! Saludos.
EliminarNo funciona en internet explorer
ResponderEliminarpero igual gracias por el tutorial
Me sirvió mucho tu código, para los que lo usen con inputs adentro tienen que comentar la siguiente linea:
ResponderEliminarvisibility: hidden;
No puedo colocar un div dentro de las pestañas
ResponderEliminarGracias por el aporte
ResponderEliminarGracias amigo , pero tengo una pregunta, para Internet explorer 8 hay una solucion
ResponderEliminarComo puedo modificar el contenido. Input esta como invisible para no mostrar los radio button pero si quiero colocar campos tipo input no salen..
ResponderEliminarMuy Muy buen post sin jquery.js esta excelente , gracias.
ResponderEliminarHola podrias enseñarme como ponerlo en mi blog? si no es mucho pedir :c
Eliminaresta muy bueno, pero no funciona en IE, lastima
ResponderEliminar