¿La caja de luz perfecta? Usando PhotoSwipe con jQuery

Recientemente encontré una biblioteca de JavaScript llamada PhotoSwipe, y estoy realmente impresionado. Es una biblioteca brillante que sobrepone una imagen o un grupo de imágenes en su página actual, un efecto conocido popularmente como caja ligera. PhotoSwipe está actualmente desarrollado por Dmitry Semenov; lo reconstruyó el año pasado cuando se hizo cargo del proyecto. Las mejoras incluyen:

  • Modular: PhotoSwipe está integrado en varios módulos, lo que le permite deshacerse de características particulares que no necesita. Esto mantiene la biblioteca muy ligera.
  • Sensible: una característica indispensable por todos los medios. Photoswipe sirve el tamaño de imagen apropiado en función de la ventana gráfica actual.
  • Gesto táctil: PhotoSwipe admite algunos gestos táctiles que permiten a los usuarios interactuar a través de Tap y Pinch, dándoles funciones emergentes, de zoom y de cierre..

El único inconveniente es que PhotoSwipe no se agotará. Como dice el desarrollador:

“PhotoSwipe se hace simple y rápido para los usuarios finales, no para los desarrolladores. No es un simple complemento de jQuery, se requiere al menos un conocimiento básico de JavaScript para instalar.

Pero se puede utilizar junto con otras bibliotecas. En este tutorial, veremos cómo usar PhotoSwipe con jQuery. Haremos que todo el proceso sea fácil de comprender, incluso si no está bien versado en JavaScript puro.

Vamos a empezar.

1. Empezando

Comenzaremos con:

  1. Creando los directorios del proyecto..
  2. Creando un documento HTML.
  3. Enlace a jQuery. En este tutorial voy a usar jQuery 2.0, por lo tanto, solo se admiten los navegadores modernos..
  4. Coge las copias de la biblioteca PhotoSwipe que comprende los archivos: photoswipe.min.jsphotoswipe-ui-default.min.js (El código que construye la interfaz de usuario de PhotoSwipe), default-skin.cssdefault-skin.pngdefault-skin.svg, ypreloader.gif.
  5. Organice los archivos en su orden de directorio preferido y vincúlelos dentro del archivo HTML.

2. Estructurando el HTML

La estructura HTML es la parte más esencial, ya que con el tiempo controlará cómo escribimos el JavaScript. Aquí asumiremos que tenemos un par de imágenes, de la siguiente manera:

playa

Atributos de datos

Aparte de la clase y los atributos del esquema (que ayudarán con el SEO), también hemos agregado un datos-* atributo en la etiqueta de anclaje que envuelve la imagen. Esto almacena el tamaño completo (ancho x alto) de la imagen.

Más marcado

Ahora agregamos el marcado que PhotoSwipe usará para superponer las imágenes completas. Añadir esto justo antes de la etiqueta de cierre del cuerpo, .

 

Todos estamos configurados con el HTML, por lo que ahora podemos continuar con el JavaScript. Como se mencionó estaremos usando jQuery..

3. jQuery

Nuestras imágenes se agrupan dentro de un div con el imagen clase. Puede haber varios grupos de imágenes más dentro de la página, por lo que hacemos un bucle a través de cada .imagen elemento.

$ ('. picture'). each (function () ); 

Detalles

PhotoSwipe nos obliga a proporcionar la fuente de imagen completa junto con su tamaño. Para encargarnos de esto, creamos una función que recorrerá la etiqueta de anclaje para recuperar estos detalles, de la siguiente manera:

$ ('. picture'). each (function () var $ pic = $ (this), getItems = function () var items = []; $ pic.find ('a'). each (function () var $ href = $ (this) .attr ('href'), $ size = $ (this) .data ('size'). split ('x'), $ width = $ size [0], $ height = $ size [1]; var item = src: $ href, w: $ width, h: $ height items.push (item);); devolver artículos; var items = getItems ();); 

Vamos a dividir el código abajo en varias partes:

  1. Primero inicializamos con una matriz vacía en elementos = [].
  2. Luego hacemos un bucle a través de cada etiqueta de anclaje con el .cada() método.
  3. $ href = $ (this) .attr ('href') obtiene el valor en el href Atributo, almacenando el camino de la imagen completa..
  4. $ size = $ (this) .data ('size'). split ('x') obtendrá el valor de la tamaño de datos atribuir a través de la jQuery .datos() método. Entonces usamos el división()método para separar el valor.
  5. Podemos obtener el valor del ancho y la altura por separado con: $ ancho = $ tamaño [0] y $ altura = $ tamaño [1].
  6. Utilizando la empujar() Método que recopilamos toda esta información en un Array.

Prueba en consola

Ahora tenemos la fuente de la imagen y el tamaño de la imagen almacenados en el artículos variable. Para verificar, puede ejecutar la variable a través de la console.log () y deberías encontrar la siguiente estructura de datos en DevTools.

Hacer clic

A continuación, unimos el figura elemento con el hacer clic evento, construir una instancia de PhotoSwipe, pasar el artículos junto con las opciones de configuración, y finalmente inicializar PhotoSwipe.

var $ pswp = $ ('. pswp') [0]; $ pic.on ('click', 'figure', function (event) event.preventDefault (); var $ index = $ (this) .index (); var options = index: $ index, bgOpacity: 0.7, showHideOpacity: true // Inicializar PhotoSwipe var lightBox = new PhotoSwipe ($ pswp, PhotoSwipeUI_Default, items, options); lightBox.init ();); 

La razón por la que usamos el figura El elemento para hacer clic, en lugar de la etiqueta de anclaje, es para que podamos recuperar fácilmente el índice (o el orden posterior). Esto nos permite informar a PhotoSwipe del índice correcto para superponer la imagen correspondiente.

Conclusión

Acabamos de implementar PhotoSwipe utilizando jQuery. El código es comparativamente más delgado y más fácil de entender que cuando está escrito en JavaScript de vainilla. 

Ahora que ha comenzado, también puede ajustar PhotoSwipe con las pocas opciones proporcionadas e incluso precargar la imagen para que vea la imagen completa al instante al hacer clic. Dejaré los estilos a tu imaginación ya que no hay reglas estrictas para ellos..

Espero que hayas aprendido algo de este tutorial y que a veces te resulte útil. No olvides revisar la demostración en vivo y dejar cualquier pregunta o pensamiento en los comentarios.!

Recursos adicionales

  • Primeros pasos con PhotoSwipe
  • Imágenes responsivas con PhotoSwipe
  • 30 días para aprender jQuery
  • Todo lo que necesitas saber sobre el atributo de datos HTML5
  • Mejore la visibilidad de su sitio web con un marcado semántico