Estos días cada vez se diseñan más y más sitios en función del enfoque de una sola página (conocido como sitios de una sola página o de una sola página). En este artículo, exploraremos cómo crear esa experiencia para un sitio de demostración aprovechando fullPage.js.
Eche un vistazo a lo que vamos a construir en esta demostración de Codepen. Además, todos los archivos para esta demostración se pueden encontrar en este repositorio de Github.
fullPage.js es un complemento basado en jQuery que nos permite crear sitios web de desplazamiento de una página. Creado por el desarrollador web Álvaro Trigo, como veremos en las próximas secciones, viene con una serie de diferentes opciones de personalización..
Además, este complemento proporciona documentación bien organizada con muchos ejemplos prácticos.
Afortunadamente, funciona no solo en todos los navegadores modernos, sino también en algunos ejemplos más antiguos como IE 8 y Opera 12.
Por último, es posible que desee echar un vistazo a la versión de Wordpress.
Para comenzar con fullPage, debe descargar e instalar los siguientes archivos en su proyecto:
jquery.fullPage.css
Archivo CSSjquery.fullPage.js
Archivo JS o su versión minificada (es decir,. jquery.fullPage.min.js
)Puede obtener una copia de esos archivos visitando el repositorio de Github, usando un administrador de paquetes (por ejemplo, Bower), o cargando los recursos necesarios a través de un CDN (por ejemplo, cdnjs). Para este tutorial, elegiremos la última opción..
Coloque un enlace al archivo CSS dentro de la de su documento HTML:
… Y los scripts de JS antes del cierre. etiqueta:
Ahora, estamos listos para profundizar en el plugin!
Primero, tenemos que especificar las secciones de nuestro sitio. Para ello, asignamos la sección
asigne clase a los elementos de destino y envuélvalos dentro de un contenedor que tenga un identificador único. Más adelante, este identificador se utilizará para inicializar una instancia de fullPage.
Por defecto, el complemento considera que la primera sección es la activa. Pero, si queremos, podemos cambiar ese comportamiento agregando el activo
clase a la sección deseada.
Aquí está la estructura HTML requerida para nuestro ejemplo:
fullPage.js
Esta es la primera seccion
Salta a la última diapositiva
Observe que todas las secciones comparten un nombre de clase común (es decir,.
desplazamiento vertical
) que hemos elegido para ser diferente al predefinido (es decir,.sección
). Siendo ese el caso, necesitamos informar al complemento sobre este cambio durante el proceso de inicialización.Creación de diapositivas horizontales
Cada una de estas secciones apiladas verticalmente puede ser opcionalmente un control deslizante horizontal con una o más diapositivas. Para identificar las diapositivas, aplicamos la
diapositivas
Clasifique los elementos de destino y anídelos dentro de la sección correspondiente..Además, es importante mencionar que, técnicamente hablando, la primera diapositiva es igual a la sección principal. Examinaremos este comportamiento lo suficientemente pronto!
De vuelta a nuestro ejemplo, el fragmento de código a continuación muestra cómo configuramos dos diapositivas dentro de nuestra quinta sección:
fullPage.js
Esta es la quinta sección y contiene la primera diapositiva.
fullPage.js
Esta es la segunda diapositiva.
Gracias!
Nuevamente, como puede ver, le hemos dado a nuestras diapositivas un nombre de clase personalizado (es decir,.
desplazamiento horizontal
).Controlando la apariencia del sitio
Podemos controlar la apariencia de nuestras secciones y diapositivas aprovechando los parámetros de configuración disponibles. Uno de esos parámetros es el
secciónColor
Propiedad que nos da una manera fácil de definir el CSS.color de fondo
propiedad para cada sección.Además, podemos establecer nuestros propios estilos para personalizar aún más las páginas. Por ejemplo, imagine que queremos aplicar una imagen de fondo completa a la segunda sección. Así es como podríamos lograrlo:
sección: nth-of-type (2) background: url ('https://unsplash.it/1910/1221?image=626') centro / cubierta sin repetición;Personalizando las opciones de navegación
El complemento ofrece muchas opciones integradas para moverse a través de secciones y diapositivas. Algunas de estas opciones están activadas de forma predeterminada (por ejemplo, la rueda del mouse y el teclado), mientras que otras se activan manualmente a través del objeto de configuración (por ejemplo, puntos circulares).
En nuestro proyecto, queremos añadir navegación adicional en forma de puntos. Además, elegimos ocultar las flechas izquierda y derecha que normalmente aparecen en el control deslizante. Entonces, después de habilitar la navegación de puntos, podemos cambiar su apariencia sobrescribiendo los estilos predeterminados. Aquí están las nuevas reglas:
# fp-nav ul li a span, .fp-slidesNav ul li a span background: white; ancho: 8px; altura: 8px; margen: -4px 0 0 -4px; # fp-nav ul li a.active span, .fp-slidesNav ul li a.active span, # fp-nav ul li: hover a.active span, .fp-slidesNav ul li: hover a.active span ancho : 16px; altura: 16px; margen: -8px 0 0 -8px; fondo: transparente; tamaño de caja: caja de borde; borde: 1px sólido # 24221F;Y a continuación se muestra una captura de pantalla que muestra los cambios que hemos realizado:
Predeterminado, vs. estilos personalizadosTenga en cuenta que incluimos las reglas anteriores en nuestra hoja de estilo personalizada, para evitar cambios en el archivo CSS del complemento..
Creación de enlaces a secciones y diapositivas
fullPage.js nos permite cambiar la URL de nuestro sitio a medida que nos desplazamos por las diferentes secciones. Para ello, utilizamos el
anclajes
parámetro. Más específicamente, este parámetro es una matriz que contiene los enlaces de anclaje que deben mostrarse en la URL de cada sección. Por ejemplo, en nuestro ejemplo, especificamos los siguientes enlaces de anclaje (que deben ser únicos):anclas: ['firstSection', 'secondSection', 'thirdSection', 'fourthSection', 'fifthSection']Hecho esto, cuando visitemos la primera sección, la URL del sitio tendrá la
#primera sección
identificador al final, en el segundo la URL terminará en#secondSection
y así.De la misma manera, el complemento también modifica la URL mientras nos desplazamos por las diapositivas. En este punto, sin embargo, debemos recordar que, básicamente, la primera diapositiva (que tiene un índice de 0) es la sección principal relacionada. Teniendo esto en cuenta, en nuestro proyecto, cuando estamos en la primera diapositiva de la quinta sección, la URL terminará en la
#fifthSection
enlace de anclaje. Cargar la segunda diapositiva de la misma sección activará una URL que termina en# quinta sección / 1
porque la segunda diapositiva (que tiene un índice de 1) es en realidad nuestra "primera diapositiva".Vale la pena mencionar que podemos modificar los anclajes de nuestras diapositivas agregando el
anclaje de datos
atribúyalos a ellos con los nombres de anclaje deseados (que también deberían ser únicos), al igual que en el siguiente ejemplo:
Nota: Para ver cómo cambian las URL a medida que se desplaza, consulte la Vista de depuración de nuestra demostración.
Vinculación de menús a secciones y diapositivas
Para comprender mejor cómo podemos vincular un menú a la página completa, echemos un vistazo a nuestro encabezado fijo. La siguiente captura de pantalla muestra cómo aparece:
Y el HTML:
Tu logo
Mientras se active el icono del menú de hamburguesas, aparecerá la superposición del menú principal:
Aquí está el código relacionado con este menú:
Entonces, para que FullPage sepa sobre el menú, debemos registrarlo usando el
menú
propiedad de configuración. Luego debemos vincular los elementos del menú a las secciones relevantes. Para ello, añadimos ladatos-menuanchor
atribuir a nuestros artículos con los enlaces respectivos como los valores. Mientras esos valores coincidan, el complemento agrega laactivo
clase (como nos desplazamos) para el elemento de menú correspondiente.Tenga en cuenta que el complemento aún no añade la
activo
Clase a las diapositivas. Para solucionar este problema, podemos usar jQuery (mejor solución) o CSS. En nuestro ejemplo, resolvemos este problema agregando la siguiente regla de CSS:body.fp-viewing-fifthSection-1 #menu li: last-child a background: # 453659;Vea el resultado a continuación:
En realidad, no agregamos el
activo
clase a la segunda diapositiva. Aprovechando los diferentescuerpo
clases que el complemento agrega a cada sección y diapositiva, simplemente le damos a este elemento la estilos delactivo
clase.Nota: No nos centraremos más en cómo funciona este menú porque está fuera del alcance de este tutorial..
Disparando devoluciones de llamada para las secciones
los
después de la carga
La devolución de llamada se activa una vez que se carga una sección y elDe vacaciones
devolución de llamada una vez que un usuario lo deja.En nuestro proyecto, ocultamos la navegación de puntos verticales cuando se carga la quinta sección:
Sección 4, luego Sección 5 sin puntosAsí es como lo logramos:
afterLoad: function (anchorLink, index) if (index == 5) $ ('# fp-nav'). hide (); onLeave: function (index, nextIndex, direction) if (index == 5) $ ('# fp-nav'). show ();Disparando devoluciones de llamada para diapositivas
los
afterSlideLoad
La devolución de llamada se activa cuando se carga una diapositiva y laonSlideLeave
devolución de llamada cuando el usuario lo deja.En nuestro caso, nos centramos en la segunda diapositiva para realizar una serie de acciones diferentes. Por ejemplo, una vez que se carga la diapositiva, inhabilitamos la posibilidad de desplazarse hacia arriba. Además, cambiamos el
color de fondo
propiedad de esta diapositiva, así como la apariencia de los elementos que le pertenecen..Parte del código que utilizamos se muestra a continuación:
afterSlideLoad: function (anchorLink, index, slideAnchor, slideIndex) if (anchorLink == 'fifthSection' && slideIndex == 1) $ .fn.fullpage.setAllowScrolling (false, 'up'); $ (this) .css ('background', '# 374140'); $ (this) .find ('h2'). css ('color', 'blanco'); $ (this) .find ('h3'). css ('color', 'blanco'); $ (this) .find ('p'). css ('color': '# DC3522', 'opacity': 1, 'transform': 'translateY (0)'); onSlideLeave: function (anchorLink, index, slideIndex, direction) if (anchorLink == 'fifthSection' && slideIndex == 1) $ .fn.fullpage.setAllowScrolling (true, 'up');Inicializando el Plugin
Este es el último paso necesario para activar la funcionalidad de fullPage. Aquí, pasamos como parte del objeto de configuración todas nuestras personalizaciones. Mira el fragmento de código relevante a continuación:
$ ('# fullpage'). fullpage (sectionSelector: '.vertical-scrolling', slideSelector: '.horizontal-scrolling', controlArrows: false // más opciones aquí);Conclusión
En este tutorial, disfrutamos de un recorrido rápido del complemento fullPage.js jQuery y aprendimos cómo crear un sitio de desplazamiento de página completa con capacidad de respuesta. Es importante entender que este tipo de sitio web no es adecuado para todos los casos. Además de su diseño atractivo, tienen muchas restricciones y su capacidad de mantenimiento puede ser difícil, especialmente para los sitios dinámicos. Además, este formato puede causar complicaciones con SEO..
Próximos pasos
Si desea utilizar el sitio de demostración como base para experimentar con el complemento, le sugiero los siguientes desafíos:
- Incorpore la excelente biblioteca animate.css en el proyecto e intente crear animaciones basadas en desplazamiento.
- Usa tu conocimiento de jQuery para habilitar el
activo
clase a la segunda diapositiva (ver Enlace de menú a secciones y diapositivas sección).Finalmente, si tiene alguna experiencia con sitios de una página, no dude en compartir sus ideas con nosotros en los comentarios a continuación.!