Veamos el HTML básico de un ejemplo con tres pestañas:
<div class="tabs"> <div class="tab"> <input type="radio" id="tab-1" name="tab-group-1" checked> <label for="tab-1">Primera</label> <div class="content"> el contenido de la pestaña 1 </div> </div> <div class="tab"> <input type="radio" id="tab-2" name="tab-group-1"> <label for="tab-2">Segunda</label> <div class="content"> el contenido de la pestaña 2 </div> </div> <div class="tab"> <input type="radio" id="tab-3" name="tab-group-1"> <label for="tab-3">Tercera</label> <div class="content"> el contenido de la pestaña 3 </div> </div> </div>
Ahora el CSS que ponemos antes de &head>
.tabs { /* es el rectángulo contenedor */
margin: 0 auto;
min-height: 200px;
position: relative;
width: 550px;
}
.tab { /* cada una de las pestañas */
float: left;
}
.tab label { /* la parte superior con el título de la pestaña */
background-color: #456;
border-radius: 5px 5px 0 0;
box-shadow: -3px 3px 2px #678 inset;
color: #DDD;
cursor: pointer;
left: 0;
margin-right: 1px;
padding: 5px 15px;
position: relative;
text-shadow: 1px 1px #000;
}
/* el control input sólo lo necesitamos para que las pestañas permanezcan abiertas así que lo ocultamos */
.tab [type=radio] { display: none; }
/* el contenido de las pestañas */
.content {
background-color: #678;
bottom: 0;
left: 0;
overflow: hidden;
padding: 20px;
position: absolute;
right: 0;
top: 23px;
}
/* y un poco de animación */
.content > * {
opacity: 0;
-moz-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
-o-transform: translateX(-100%);
-moz-transition: all 0.6s ease;
-webkit-transition: all 0.6s ease;
-o-transition: all 0.6s ease;
}
/* controlamos la pestaña activa */
[type="radio"]:checked ~ label {
background-color: #678;
box-shadow: 0 3px 2px #89A inset;
color: #FFF;
z-index: 2;
}
[type=radio]:checked ~ label ~ .content { z-index: 1; }
[type=radio]:checked ~ label ~ .content > * {
opacity: 1;
-moz-transform: translateX(0);
-webkit-transform: translateX(0);
-o-transform: translateX(0);
-ms-transform: translateX(0);
}
</style>
esta es la primera pestaña
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Etiam tempor posuere risus, eget suscipit felis ultricies ac. Aenean mattis dignissim purus, at fringilla dui placerat ac. Ut sit amet pellentesque tellus. Aenean fermentum mattis mi. Nullam quis orci aliquam ante tincidunt dapibus sit amet id magna. Duis semper, dui vitae blandit lacinia, justo purus adipiscing purus, id mattis nulla.
68 comentarios:
Muy muy bueno Jmiur, felicitaciones!!!
Me sacaste unas risas con las animaciones :P
Es realmente muy útil y el efecto no se pierde en lo más mínimo.
Un abrazo.
Hola JMiur,
he visto que algunas paginas en lugar de usar css para las curvas usan imagenes encurvadas, de ser asi como se hace? te paso un ej:
http://allrecipes.com/Recipe/Tiramisu-Toffee-Dessert/Detail.aspx#
Excelente entrada JMiur!; interesante, y me encantan las animaciones que se logran con las bondades del CSS3.
Es fastidioso estar probando en las versiones viejas de IE verdad?, pero bueno conforme vaya pasando el tiempo tal vez esas versiones desaparezcan en lo mas profundo del universo ahhaa!
;)Muchas Gracias y saludos!
JMiur otra vez estoy aquí para preguntarte si ya vistes que la Nueva interfaz de Blogger ya esta disponible desde tu escritorio, y con algunos cambios y novedades que seguramente te agradaran ;) (eso espero).
Por lo pronto yo ya tengo mis impresiones y si!, son buenas :).
Graciela:
Animaciones apra divertirse :D
Adrián J. Messina:
A mi me gustó la idea y no es complicada. ;uy original.
laMar:
No tengo idea pero, las propeidades depende del navegador y n odel sistema operativo.
alianza lima vs universitario:
Para eso, se usan imágenes de fondo. hay muchas formas. En esta entrada hay una idea general de cómo es el método a aplicar.
Karla:
Sí, es fastidioso y como estoy impedido de usar IE9 porque no funciona en XP, me siento algo perdido y a veces no me dan ganas de buscar alternativas. Seguramente debe haber pero, en este caso, he abandonado el intento.
Hace un ratito, acabo de recibir el pop-up y amablemente, decliné la invitación porque no me gusta para nada nada nada nada. Ya la había probado en Draft y huí raudamente :D
Por suerte, sobre gustos no hay nada escrito o mejor dicho, sobre gustos se escribe de todo y así debe ser :D
Muchas gracias por tu entrada, estoy usando tu tutorial para un sitio web.
Yu're a genius!
Muy de acuerdo con Mikersson.... decepción grande con el explorer, no funciona el efecto....
Hola me funciona perfecto, muchas gracias por compartirlo,
Tengo dos dudas:
1- Puedo usar un archivo css en vez de colocarlo sobre el head, es que lo intente y sale deforme.
2-Como cambio el color de las fonts de las pestañas y de los recuadros
Gracias de nuevo
Sí, puedes usar una rchivo CSS externo con este ejemplo o con cualquier otra regla de estilo. Lo que debes hacer es verificar que se cargue correctamente.
Las reglas de las pestañas son las de la clase tab label, allí ipuedes establecer colores y fuentes.
El contenido no tiene. Puedes usar content o bien agregar HTML con reglas propias.
Esta bien gracias, ya le di color con html. Muy bueno el post, me salvo, los demas tabs que vi necesitan *.js y son muchos problemas
Gracias por tu idea. En esta "fan page" de facebook:
www.facebook.com/compartim : he creado una pestaña llamada "punts de recollida" , el control de los tabs es tal como has indicado en tu articulo con lo cual he ahorrado el javascript.
buenas queria preguntar que significa "content > *" porque no me salen los efectos y creo que puede ser por eso.. estoy intentando instalarlo en un foro, las tabs me funcionan a la perfeccion lo unico que no puedo ver es el efecto.. no es mi navegador ya que puedo ver el efecto en esta entrada pero no en mi foro.. te agradeceria que me explicaras que funcion cumple esa clase
El DIV content es el contenido de cada pestaña; el nombre de la clase es indistinto, puede usarse cualquier otro nombre; tal vez, ese nombre de clase está usado en alguna otra parte del foro y por eso no ves nada. Sin verlo, es imposible decirte mucho más.
disculpa JMiur pero creo que no me entendiste lo que te quise preguntar.. yo al contenido lo puedo controlar a la perfeccion con la clase content, pero no logro que me funcionen los efectos de esta clase
.content > * {
opacity: 0;
-moz-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
-o-transform: translateX(-100%);
-moz-transition: all 0.6s ease;
-webkit-transition: all 0.6s ease;
-o-transition: all 0.6s ease;
}
no me funciona ni la opacidad ni la transicion ni nada.. lo que me parecio raro es que en el nombre de la clase usaras un " > * "
perdon ya esta solucionado, el problema era que para que se vean los efectos tenia que ponerle un contenido algo extenso ya que si era muy liviano, hacia tan rapido la transicion que no se alcanzaba a apreciar. saludos
como hago para quitar el margen izkierdo del contenido de la tabla?, gracias
¿A qué tabla te refieres?
Hola amigo, excelente pero me gustaría que la etiqueta .tabs se adaptara a la altura de cada contenido, he probado cambiando su altura a
height: 100% !important;
position: absolute;
tambien he probado cambiando .content y no doy con lo que quiero. Con la primera opción me reserva el espacio para la pestaña de más altura pero me mantiene ese tamaño para pestañas con menos contenido.
Tendrás que experimentar con el sistema indicado en esta entrada o algo similar y ver si llegas a algún resultado que te satisfaga ya que height 100% no significa que ese elemento ocupe el 100% de su contenido que es variable sino el 100% de su contenedor.
ok, felicidades por tu gran capacidad, al final siempre acabo en tu blog
Jmiur existe una posibilidad de que pudiera agregar un botone de Next y cada que lo apriete me manda hacia la tab que siga.?
En realidad me serviria de mucho.
Con CSS exclusivamente, lo dudo, para eso, creo que debería usar JavaScript.
Hola,
¿Alguien ha encontrado alguna solución para que funcione en Internet Explorer 9?
Es una pena pero si no funciona con ese explorador es como decir que no le funciona al 50% de la población.
Felicidades por ese simple pero efectivo código.
Saludos
Hola JMiur,
podría decirme como hacer este esfecto de tabs que encontre en http://www.iwin.com/
Aparecen 3 imagenes por pestaña. Me gustaría mucho implementarlo en mi blog.
Saludos y mucho éxito.
Eso puede hacerse con cualquier sistema de pestañas ya que depende del contenido que pongas en ellas. No hay una forma genérica para eso, dependerá del contexto donde lo hagas.
Hola de nuevo,
podrías darme una ayudita, esque soy muy burra y se me complica mucho esto de las pestañas.
Sé que tienes mucho que hacer, ¿pero por dónde empiezo?
Si no puedes ayudarme más se agradece igual.
Saludos y gracias por contestarme.
Primero que nada deberías colocar las pestañas en tu blog sin importar el contenido de ellas. Para e, puedes usar este ejemplo o cualquier otro.
hola JMiur, siempre haciendo uso de tu blog, de antemano tenga un cordial saludo,,no logro entender por qué no me funciona en un blog de prueba antes de implementarlo http://kbperuano.blogspot.com/2012/09/blog-post.html esto y todo lo pongo antes de /head y este otro de prueba después de head y antes de ]]> http://kbperu.blogspot.com/ ,, y no logro implementar, es justo lo que necesito, espero tu respuesta, desde ya muchas gracias por compartir tus conocimiento, es siempre de gran ayuda. saludos
Saludos, kawsaqi.
Lo que noto en el home del sitio es que todo está bien pero, parecería que el CSS lo has agregado dentro de <b:skin> </b:skin> incluyendo las etiquetas <style> </style> y de allí que no se apliquen todas las propiedades sino sólo algunas.
Debes eliminar las etiquetas <style> y </style> porque no deben ser incluidas dentro de esa parte de Blogger. Con borrarlas, todo debería solucionarse.
agradesco tu respuesta, lo intenté pero no sale del todo bien, ahora coloqué probando como usted lo explica, antes del /head , y el resultado es http://kbperu.blogspot.com/ ,, como que se va todo el contenido de la web y lo deja en blanco.. a qué se puede deber. de antemano muchas gracias.
Lo que ocurre es que las clases content, tabs y tab ya están siendo usadas para otras cosas dentro de tu plantilla; cámbiales el nombre a las clases de las pestañas o tendrás reglas de estilo mezcladas.
Auxilio..! Me podrias ayudar para que ese codigo funcione tambien en IE? o tendras algun otro codigo que si funcione ahi?
Gracias
En versiones anteriores a la 9, no funcionará en IE simplemente proque easa versiones no interpretan las propeidades de CSS3
Gracias por el aporte muy bueno, pero voy de nuevo con el "> *" no me funciona la animación así. Puse más contenido pero eso tampoco resolvió el problema (incluso cambié la velocidad).
La única forma es removiendo los selectores "> *" y hacer unos ajustes. Pero me gustaría entender mejor el funcionamiento de éstos.
Muy buena pestaña, el problema sería si quisieras meter un type=radio
no lo reconocería ya que con el css lo estas ocultando.
Bastaría que establecieras las reglas de estilo particulares para esos controles; por ejemplo, si estuvieran dentro del DIV content:
.content [type="radio"] {display: block;}
y así con el resto de las que sean necesarias modificar.
Olá venho lhe agradecer mais uma Vez e também dizer que coloquei VAGABUNDIA no meu recomendo do meu Blog [Ai Space]
Você tem o efeito desse site de textos ocultos aqui no Vagabundia paracido como o desse site
[image 1]
[image 2]
também Não sei o nome do efeito . Grata!
No sabría decirte porque no veo tal cosa en esa página que indicas:
http://www.centralgospelmusic.com.br/
Entrando no site. há um slite com rostos dos cantores, selecionar um deles.
Depois vai abrir um lugar Selecione Discográfia.
..Ai chega na página que falai para você. que vem com as letras das músicas ocultando
ME AJUDA VAI!!!
cONFIRMO É E STE [GENTRAL GOSPEL GUSIC]
Ahora lo vi. Hay muchas formas de mostrar y ocultar cosas, si usas jQuery, hay formas sencillas pero no hay ninguna solución universal; dependerá de cada caso.
No sé a que te refieres con eso; allí hay propiedades definidas en el CSS1, el 2 y el 3; como en casi todo estilo.
Genial me sirvió de mucho para diseñar una web
Hay alguna posilibidad que el contenido del box, tome la altura de acuerdo a la informacion que la contiene, yo estoy colocandole adentro un listado que va variando.
gracias
No con este sistema. La altura debe ser fijada.
me gustaria saber como cambiar el color de fondo, no encuentro la propiedad en el css si me puedes decir te lo agradeceria, muy buen post :D
La propiedad es background-color; allí están:
.tab label {
background-color: #456;
.content {
background-color: #678;
[type="radio"]:checked ~ label {
background-color: #678;
Gracias JMiur. Buscaba una solución sencilla al tema de poner pestañas en formularios de entrada de datos y me lo has resuelto de maravilla. Funciona muy bien, al menos en navegadores serios.Saludos
Perfecto, Juan :-)
oye que buen tuto.
tengo uan pregunto como se hace para que la info salga arriba del tab y no debajo??
de antemano gracias
Tendrás que experimentar con eso. Habría que pensarlo todo desde cero.
Fantástico aporte JMiur.
Curiosamente ayer me tuve que enfrentar a que una página que estoy haciendo tuviese usuarios de internet explorer, y al ver que no dabas soporte para IE <= 8 tuve que ingeniármelas. He hecho un pequeño script y considero oportuno compartirlo por si algún usuario lo necesita.
Este script funciona con IE versión igual o superior a 8 y requiere jQuery:
1º Añadimos un evento onclick en los label de las pestañas:
<label for="tab-1" onclick="javascript:cambiaPestañaIE('tab1');">...</label>
<label for="tab-2" onclick="javascript:cambiaPestañaIE('tab2');">...</label>
<label for="tab-3" onclick="javascript:cambiaPestañaIE('tab3');">...</label>
2º Creamos la función cambiaPestañaIE:
function cambiaPestañaIE(tab){
var is_ie = navigator.userAgent.toLowerCase().indexOf('msie ') > -1;
if (is_ie){
$(".tab1").css("display","none");
$(".tab2").css("display","none");
$(".tab3").css("display","none");
$("." + tab).css("display","block");
}
}
Se me olvidaba, hay que añadir la clase tab1 tab2... al div content:
<div class="content tab1">
<div class="content tab2">
<div class="content tab3">
gracias por el tuto he conseguido poner las pestañas abajo y todo bien, pero me gustaaria poner dentro del conteenido de las pestañas un video de youtube, en cada pestaña me podrias decir como? por lo menos no consigo poner el video, pero imagenes si.
En principio, sólo poniendo la etiqueta object o iframe.
hola hay alguna manera de que cuando se de a la siguiente pestaña el video que se esta reproduciendo en la anterior se pare. Un saludo
Eso no puede hacerse con CSS.
Hola, como puedo hacer que el cuadro se ajuste al contenido de cada pestaña, ya que lo inserte en mi blog, pero hay entradas que tienen mayor contenidos que otros pero no se ajustan, itente colocando el alto que esta en px al 100% pero se deforma en las entradas y queda por debajo de los comentarios, espero que me puedas ayudar, desde ya muy buenos aportes en tu blog, saludos...
El esquema que muestra esta entrada no tiene esa posibilidad, la altura debe ser fija.
Saludos, sé que ha pasado mucho tiempo desde que has escrito todo esto, pero hasta ahora no le he necesitado. Mi consulta es que cuando añado más pestañas, estas no se abren. ¿Cómo podría solucionarlo?
Imposible saberlo sin ver el ejemplo.
que tal amigo, como estas? como tendria q hacer para agregar mas pestañas? intente pero la cuarta pestaña me sale debajo de la numero 3 y no al lado , necesito como 5. gracias
Hola amigo, discupa las molestias , intente de agregarle una pestaña mas y me sale debajo, te paso el link http://thdjsclub.blogspot.com/p/radio.html con chrome me sale mal y con mozilla me sale al lado , habra alguna solucion ? en total encesito 5 pestañas :/ gracias!!
listo amigo , me habia faltado un /div> jeje muy bueno tu blog , siempre consulto , al igual aun consulto el blog de una genia q se fue entre nosotros escaparate de rosa ...
queria hacerte una pregunta fuera de este tema , ustd podria decirme porque me aparecen estas comillas en la parte debajo del home de mi blog ? <<
>>
sera error de algun gadget ? estoy aprendiendo y eso me trae dolor de cabeza porq a veces esas comillas hacen q el blog se estire mucho. T agradezco
Buen dia, muy util el tutorial, solo que, justamente, tengo que poner radio buttons dentro del content. Ya hice lo que dijiste (.content [type="radio"] {display: block;}) y ya veo los circulitos, pero las etiquetas de cada circulo lo muestra en caja. Que otras opciones tendria que reescribir para que se vea sin diferencias al resto del formulario?
Gracias
No sé cuál es tu ejemplo ni que etiquetas estás usando o como está armado ese formulario.
¿Quiere dejar un comentario?
recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...
Nota: sólo los miembros de este blog pueden publicar comentarios.
Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.
Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...