En este tutorial vamos a recrear el efecto hover como se ve en el sitio web de
Experimentos de Navidad.Estaremos usando SVG para la forma y Snap.svg para la
animacin en vuelo estacionario.
VER DEMO DESCARGAR FUENTE Si usted ha visitado la fantstica nueva edicin de Los Experimentos de Navidad entonces usted puede haber notado el efecto realmente genial flotar en el calendario de Navidad que utiliza una forma triangular. La forma est formada por un tringulo usando las fronteras y hoy me gustara que le muestre la forma de lograr el mismo efecto utilizando SVG y Snap.svg . La idea es crear un SVG con un camino que representa el fondo en forma de algn ttulo y se transforme ese camino en la otra en vuelo estacionario. Hay muchas posibilidades creativas y hoy vamos a crear tres ejemplos diferentes. La cosa agradable de utilizar SVG es que podemos ajustar el tamao de la forma que el tamao de su contenedor padre y hacer todo lo fluido. Las ilustraciones que se utilizan en las demostraciones son por el talentoso Isaac Montemayor . Ver sus ilustraciones originales en su sitio web o Dribbble . Por lo tanto, vamos a empezar! EL MARCADO DE Lo que vamos a hacer primero, es dibujar dos formas en un editor de grficos vectoriales como Adobe Illustrator o Inkscape. Cada forma constar de un camino y cuando terminemos, vamos a copiar los puntos de nuestros caminos a utilizar en nuestra marca. Tenga en cuenta que hemos transformado un polgono en un camino. Si usted est usando Inkscape puede hacerlo seleccionando el objeto y eligiendoRuta> Objeto a trayecto . Los puntos de la ruta se pueden obtener en Editar> Editor XML ... que abrir una vista como se ve en la siguiente captura de pantalla:
La "d" (datos de trayectoria) valor es lo que busca. Para el margen de beneficio que tendremos una seccin con la "red" de clase que contiene figuras envueltas en los anclajes. Usted podra tambin utilizar una lista aqu lo que necesitar un poco de margen de beneficio extra. La cifra contendr la imagen, la forma visible inicialmente y un figcaption : < seccin Identificacin = "red" clase = "clearfix grid" > < a href = "#" -path-libracin de datos = "m 180,34.57627 -180,0 L 0,0 180,0 z" > < figura > < img src = "img / 1.png" /> < svg viewBox = "0 0 180 320" preserveAspectRatio = "none" > < ruta d = "M 180 160 0218 0,0 180,0 z" /> </ svg > < figcaption > < h2 > Crystalline </ h2 > < p > Soko radicchio bunya dulse gramo nueces. </ p > < botn > Ver </ botn > </ figcaption > </ figura > </ a > <-! ... -> </ seccin > El SVG tendr los valores viewBox respectivos para la grfica y un preserveAspectRatio de "ninguno". Esto nos permitir cambiar el tamao y estiramos la forma a las dimensiones que queremos, que es 100% en este caso. Definiremos la anchura y altura en nuestra hoja de estilos. La informacin de la ruta de vuelo estacionario se almacena en el atributo de datos de datos ruta-libracin del anclaje de envolver. Vamos ESTILO todo esto. EL CSS Tenga en cuenta que la CSS no contendr ningn prefijos de proveedores, pero se puede encontrar en los archivos. El estilo que vamos a ir a travs es para los tres ejemplos. En primer lugar, vamos a echar un vistazo en el estilo comn y luego vamos a establecer los estilos individuales para todas las demos. Vamos a empezar con la red. Vamos a centrar y darle un max-width y una anchura porcentaje para que sea fluido: .grid { margen : 40px auto 120px ; max-width : 1000px ; ancho : 90% ; } Los anclajes debe flotar a la izquierda y vamos a darles un max-ancho de 250px y una anchura de 25% desde que nos gustara que sean lquidos y mostramos cuatro elementos en una fila. Nosotros nos encargaremos de tamaos de pantalla ms pequeos en nuestras preguntas de los medios ms adelante: .grid un { float : izquierda ; max-width : 250px ; ancho : 25% ; de color : # 333 ; } Para crear un poco de compensacin para los artculos extraos, vamos a establecer un margen superior de 30px y un margen inferior de -30px. Esto crear un aspecto agradable para la red, al igual que en la red en el sitio web Experimentos de Navidad: .grid un: nth-child (impar) { margen : 30px 0 -30px 0 ; } La cifra debe colocarse relativamente porque vamos a necesitar algunos de los nios a ser absoluta.Desde nuestro efecto hover podra causar algo de desbordamiento, y no queremos que eso sea visible, vamos a establecer el desbordamiento de "oculto": .grid figura { posicin : relativa ; overflow : hidden ; margen : 5px ; fondo : # 333 ; } La imagen ocupar toda la anchura de su padre y la opacidad se establece en 0,7. En vuelo estacionario queremos animar la opacidad, as que vamos a aadir una transicin: figura .grid img { posicin : relativa ; pantalla : bloque ; ancho : 100% ; opacidad : 0,7 ; transicin : opacidad 0,3 s; } El figcaption necesita ser absolutamente posicionado y vamos a estirarla sobre todo el artculo: .grid figcaption { posicin : absoluta ; top : 0 ; z-index : 11 ; relleno : 10px ; ancho : 100% ; altura : 100% ; text-align : centro ; } El ttulo y el prrafo ambos sern animados en vuelo estacionario, as que vamos a darles las respectivas transiciones y mover su posicin inicial un poco: .grid figcaption h 2 { margen : 0 0 20px 0 ; de color : # 3498db ; text-transform : maysculas ; letter-spacing : 1px ; font-weight : 300 ; font-size : 130% ; transicin : transformar 0,3 s; }
figcaption .grid p { relleno : 0 20px ; Color : #aaa ; font-weight : 300 ; transicin : opacidad 0,3 s, se transforman 0,3 s; }
.grid figcaption h 2 , figcaption .grid p { transformar : translateY ( 50px ); } El estilo de botn comn para todos los tres ejemplos es la siguiente. El botn tambin se animar, as que vamos a aadir una transicin de la opacidad y de la transformacin: figura .grid botn { posicin : absoluta ; relleno : 4px 20px ; fronterizo : ninguno ; text-transform : maysculas ; letter-spacing : 1px ; font-weight : bold ; transicin : opacidad 0,3 s, se transforman 0,3 s; } Para evitar algo de parpadeo y problemas tcnicos, tendremos que dar los elementos de animacin y su padre una cara trasera visibilidad oculta: figcaption .grid, .grid figcaption h 2 , .grid figcaption p, figura .grid botn { cara trasera visibilidad : ocultado ; } El SVG tambin se posicionar absolutamente y vamos a estirarlo sobre el elemento mediante el establecimiento de la anchura y altura a 100%. Dndole un valor superior de 1px en vez de 0 se asegurar de que no hay lnea de extrao en Firefox (26,0 / Mac). .grid svg { posicin : absoluta ; top : 1px ; / * Soluciones de representacin cuestin en FF * / z-index : 10 ; ancho : 100% ; altura : 100% ; } El color de relleno de la ruta ser de color blanco: svg .grid ruta { llenar: #fff ; } En este punto tambin se puede tratar de aadir algunas transiciones a la trayectoria y por ejemplo, cambiar el color de relleno en vuelo estacionario. Los efectos de activacin comunes para los anclajes sern los siguientes: .grid una: figura libracin img { opacidad : 1 ; }
.grid a: hover figcaption h 2 , .grid un: figcaption libracin p { transformar : translateY ( 0 ); }
.grid un: figcaption libracin p { opacidad : 0 ; } La opacidad de la imagen se establece en 1, mientras que el prrafo de las leyendas se desliza hacia arriba y desaparece. El ttulo se mover a arriba, tambin. Vamos Estilo demos individuales. Algunos de los estilos sern comunes a ms de una demostracin. En el primer y tercer ejemplo, queremos que el botn tenga un borde blanco y se centrar en el tema. Se oculta inicialmente y redujo. Las otras transformadas se utilizan para "tirar" en su posicin y centrarlo. En vuelo estacionario, haremos escala en el botn y se desvanecen en: .demo -1 body { fondo : # 3498db ; }
.demo -1 .grid una: figura botn activable, .demo -3 .grid una: figura botn hover { opacidad : 1 ; transformar : translateY ( -50% ) translateX ( -50% ) escala ( 1 ); } Para la segunda demo, vamos a redefinir algunos colores y fijamos el botn que se oculta en la parte inferior de la figura. Para eso hemos creado el fondo a 0 y traducimos 100% (de su propia altura). En vuelo estacionario vamos a hacer que se deslizan hacia arriba con una funcin de aceleracin "facilidad de salida" diferente (el deafult es "aliviar"): .demo -2 body { fondo : # e74c3c ; }
.demo -2 .grid figcaption h 2 { de color : # e74c3c ; }
.demo -2 figcaption .grid p { transicin de retardo : 0,05 s; }
.demo -2 .grid una: figura botn hover { transicin-timing-funcin : la facilidad de salida; transformar : translateY ( 0 ); } El ttulo y el prrafo del segundo y tercer ejemplo tendrn una funcin de aceleracin cbica-bezier que ayudar a emular una transicin elstica. Tambin vamos a establecer una duracin diferente sin demora para el prrafo cuando se cierne. Esto asegurar que el prrafo se desvanece rpidamente antes de llegar a la cima de nuestra forma SVG: .demo -2 .grid figcaption h 2 , .demo -2 figcaption .grid p, .demo -3 .grid figcaption h 2 , .demo -3 figcaption .grid p { tiempo-funcin: cbico-bezier ( 0.250 , 0.250 , 0.115 , 1.445 ); }
.demo -2 .grid a: hover figcaption p, .demo -3 .grid un: figcaption libracin p { transicin de retardo : 0 s; transicin de duracin : 0,1 s; } Por tercer demo que va a cambiar algunos colores y dejar el ttulo traducido un poco en vuelo estacionario en vez de hacer que se vaya a 0: .demo -3 body { fondo : # 52be7f ; }
.demo -3 .grid figcaption h 2 { de color : # 52be7f ; }
.demo -3 .grid a: hover figcaption h 2 { transformar : translateY ( 5px ); } Para las pantallas ms pequeas, queremos cambiar el nmero de elementos en una fila, as que vamos a restablecer el ancho y tambin el margen de los hijos impares. Los anclajes que deben tener un margen son la 2 , 5 , 8, 11 y as sucesivamente, que es descrito por la secuencia 3n-1 . Consejo: Si usted quiere encontrar la secuencia de una fila de nmeros en forma rpida, por ejemplo, puede ir aWolframAlpha y escriba sus nmeros. Una posible secuencia de identificacin con la forma cerrada se puede encontrar en uno ltimas cajas. Para tamaos ms pequeos, ajustaremos el max-ancho de la red y redefinir algunos mrgenes para los elementos de leyenda: media pantalla y ( max-width : 58em ) { .grid un { anchura : 33,333% ; }
media pantalla y ( max-width : 27em ) { .grid { max-width : 250px ; }
.grid un { ancho : 100% ; }
.grid un: nth-child (incluso) { Margen : 0 ; } } Y eso es todo el estilo! Vamos a pasar a la JavaScript. EL JAVASCRIPT Usaremos Snap.svg , una gran biblioteca para trabajar con IVS. Por favor, eche un vistazo a ladocumentacin y el Getting Started tutorial interactivo para una mejor comprensin de cmo se puede utilizar. Vamos a empezar por la definicin de la velocidad y la variable de flexibilizacin. Tambin definiremos una variable que contendr la informacin sobre la ruta y el camino vuelo estacionario. Cuando se cierne sobre un ancla, vamos a animar el camino de transformarse en la "a" camino. Al salir del ancla, nos animamos de nuevo a la "de la" ruta de acceso: ( funcin () {