Muchas veces queremos mostrar cierta información asociada a algún grafico o imagen, y la mejor opción es utilizar la técnica Caption, esta nos permitirá hacer la descripción, hacer algún tipo de referencia o simplemente agregar algunos títulos. Con CSS Y algunas características de CSS3 podemos hacer esta experiencia un poco mas animada e interactiva, en este tutorial veremos como hacer un efecto caption a nuestras imágenes, que podemos utilizar para mostrar en nuestro portafolio, mostrar productos etc..
ok, vamos a comenzar.
EL HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| < ul class = "contnedor caption" > < li > < figure > < div > < img src = "images/proyecto1.jpg" alt = "music image" > < / div > < figcaption > < h 3 > Poyecto 1 < / h 3 > < span > Lorem Ipsum is simply dummy text of the printing and typesetting industry. < / span > < a href = "" class = "btn_hover" > Visitar < / a > < / figcaption > < / figure > < / li > < / ul > |
El código HTML es básico y fácil de entender, tenemos una lista <ul> asociada a dos clases dentro tenemos los respectivos <li> dentro tenemos la etiqueta <figure> de html5 que es la encargada de contener todo el contenido a mostrar, después tenemos un <div> y dentro de el mostramos la imagen <img>, aparte tenemos la etiqueta <figcaption> donde mostraremos la información adicional es decir el caption, dentro de el tenemos un titulo en <h3> un <span> para mostrar el texto y un enlace <a>. Esto es básicamente todo, claro aun falta los CSS.
LOS CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| .contnedor { padding : 20px 20px 100px 20px ; max-width : 1200px ; margin : 0 auto ; list-style : none ; text-align : center ; } .contnedor li { display : inline- block ; width : 363px ; margin : 0 ; padding : 20px ; text-align : left ; position : relative ; } |
los anteriores fueron los del contenedor principal, es decir la <ul> y el/los <li>, le damos las proporciones y dimensiones en las que se van mostrar, los <li> que al final será cada imagen la mostramos con display: inline-block por si tenemos muchas se ubicaran una al lado de la otra, con un ancho de 363px para que encajen de a tres por líneas en caso de tener varias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| .contnedor figure { margin : 0 ; position : relative ; } .contnedor figure img { max-width : 100% ; display : block ; position : relative ; } .contnedor figcaption { position : absolute ; top : 0 ; left : 0 ; padding : 20px ; background : #666666 ; color : #ed4e6e ; } figcaption span { color : #DDDDDD ; display : block ; font-size : 13px ; margin : 12px 0 ; } .contnedor figcaption h 3 { border-bottom : 1px solid #777777 ; color : #FFFFFF ; margin : 0 ; padding : 0 0 5px ; } .contnedor figcaption a { text-align : center ; padding : 5px 10px ; border-radius: 2px ; display : inline- block ; background : #31a7c4 ; color : #fff ; } |
Aplicamos los estilos de cada elemento que compone el ítem, es decir, la etiqueta figure, la imagen, la etiqueta figcaption el texto que está dentro de un span, el h3 y el enlace, estos son estilos para que se vean bien y para posicionarlos, hasta ahora esto es lo que vemos.
aplicamos un poco de perspectiva con la propiedad perspective y perspective-origin, con esto determinamos la intensidad del efecto 3d y cambiar la posición de origen interior del elemento que tendrá efecto 3d.
1
2
3
4
5
6
7
8
| . caption li { -webkit-perspective: 1800px ; -moz-perspective: 1800px ; perspective: 1800px ; -webkit-perspective-origin: 0 50% ; -moz-perspective-origin: 0 0% ; perspective-origin: 0 0% ; } |
Básicamente le decimos al navegador que estamos trabajando con características 3d y por ahora ocultamos el div que tenemos dentro de figure
1
2
3
4
5
6
7
8
| . caption figure { -webkit-transform-style: preserve -3 d; -moz-transform-style: preserve -3 d; transform-style: preserve -3 d; } . caption figure > div { overflow : hidden ; } |
Aplicamos animación a la imagen dentro del item, le decimos que se mueva 23% de su ubicación en el eje x con la propiedad translateX, esta se moverá de izquierda a derecha y tendrá una transición que aplicamos con la propiedad transition.
1
2
3
4
5
6
7
8
9
10
11
12
13
| . caption figure img { -webkit-transition: -webkit-transform 0.3 s ease-out; -moz-transition: -moz-transform 0.3 s ease-out; transition: transform 0.3 s ease-out; } . caption figure:hover img { -webkit-transform: translateX( 23% ); -moz-transform: translateX( 23% ); -ms-transform: translateX( 23% ); transform: translateX( 23% ); cursor : pointer ; } |
Ajustamos la altura al 100% de nuestro caption y lo dejamos invisible con la propiedad opacity en 0, con backface-visibility: hidden nos aseguramos que al momento de girar el elemento en efecto 3d la otra cara del elemento quede oculta ya que lo estamos rotundo -90 grados y en su punto de origen lo dejamos en 0 0. Luego en el estado hover, es decir cuando situé el mouse sobre el lo hacemos totalmente visible cambiando su opacidad, cambiamos la rotación y aplicamos la transición a todos los cambios para dar la sensación de movimiento.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| . caption figcaption { height : 100% ; width : 50% ; opacity: 0 ; -webkit-backface- visibility : hidden ; -moz-backface- visibility : hidden ; backface- visibility : hidden ; -webkit-transform-origin: 0 0 ; -moz-transform-origin: 0 0 ; transform-origin: 0 0 ; -webkit-transform: rotateY( -90 deg); -moz-transform: rotateY( -90 deg); transform: rotateY( -90 deg); -webkit-transition: -webkit-transform 0.4 s, opacity 0.1 s 0.3 s; -moz-transition: -moz-transform 0.4 s, opacity 0.1 s 0.3 s; transition: transform 0.4 s, opacity 0.1 s 0.3 s; } . caption figure:hover figcaption{ opacity: 1 ; -webkit-transform: rotateY( 0 deg); -moz-transform: rotateY( 0 deg); transform: rotateY( 0 deg); -webkit-transition: -webkit-transform 0.4 s, opacity 0.1 s; -moz-transition: -moz-transform 0.4 s, opacity 0.1 s; transition: transform 0.4 s, opacity 0.1 s; } |
Y finalmente aplicamos los estilos al enlace que esta dentro del figcaption que al final será un boton que tendrá un enlace, lo posicionamos absolutamente y aplicamos estilos de background y transicion en el estado hover.
1
2
3
4
5
6
7
8
9
10
11
| . caption figcaption a { position : absolute ; bottom : 20px ; right : 20px ; } .btn_hover:hover { background : #3fc7e8 ; -webkit-transition: all 0.2 s ease-in; -moz-transition: all 0.2 s ease-in; -o-transition: all 0.2 s ease-in; } |
Y eso es todos, tenemos listo nuestro efecto caption con css3 para utilizar en proyectos, para mostrar nuestro portafolio personal, mostrar información de productos etc.
- See more at: http://www.tutosytips.com/efecto-caption-a-imagenes-con-css3/#sthash.9u6AoRJf.dpuf
Fuente:enlace
No hay comentarios:
Publicar un comentario