Volver al blog

Creación de elementos de arrastrar y soltar con JavaScript puro y vanilla

Creación de elementos de arrastrar y soltar con JavaScript puro y vanilla

JavaScript es uno de los lenguajes de programación más populares, potenciado con más de 24 frameworks y alrededor de 84 librerías. Es el único lenguaje de programación soportado intrínsecamente por todos los navegadores. Además, el lenguaje admite tipado dinámico y es excelente para el renderizado y la animación. Puedes aprovechar JavaScript para añadir comportamiento interactivo en el front-end, controlar el backend, crear aplicaciones web y móviles, y más. La opción de añadir efectos a cualquier sitio web y hacerlo personalizable convierte a este lenguaje en uno de los favoritos de los desarrolladores a nivel mundial.

En esta guía, te guiaremos a través de los pasos para crear elementos de arrastrar y soltar utilizando Vanilla JavaScript puro. Además, daremos un paso más allá y crearemos una aplicación de “Planificador Matutino” utilizando los API de Arrastrar y Soltar de HTML controladores de eventos.

Requisitos previos

Para seguir este tutorial, debes tener:

  • Conocimientos básicos de JavaScript.
  • Tener nociones de HTML y CSS será de gran ventaja.

Paso 1: Crear un nuevo proyecto

Comienza creando un contenedor con dos elementos hijos. Utilizaremos el primer elemento hijo para arrastrar y el segundo elemento hijo para almacenar los elementos arrastrados.

Nota: En este tutorial, trataremos los contenedores como un almacén para guardar todos los elementos arrastrados. En pocas palabras, todos los elementos arrastrados desde el primer hijo se soltarán en el segundo hijo.

A continuación, utiliza el comando cd para cambiar el directorio a la carpeta drag-and-drop-demo :

Paso 2: Configuración inicial

En este tutorial, crearemos archivos HTML, CSS y JavaScript y los conectaremos. Primero, nombra los archivos como index.html, styles.css, y scripts.js respectivamente.

A continuación, añade el título “Mi Planificador Matutino” en el archivo index.html :

A continuación, vincula el CSS y añade JavaScript a HTML:

Ahora, crearemos un contenedor inicial y añadiremos el elemento que queremos arrastrar y soltar. Asegúrate de establecer el atributo draggable="true", y añade la lista de elementos que quieres arrastrar o soltar.

A continuación, añade las siguientes líneas de código en las <body> etiquetas:

Guarda y cierra el archivo index.html. Después de eso, intenta abrir el archivo index.html en tu navegador y verás que se abre una página:

A continuación, vamos a dar estilo a nuestro index.html  usando CSS para que se vea presentable.

Paso 3: Dar estilo usando CSS

A continuación, añade estilos a todos los elementos que hemos incluido en nuestro index.html archivo:

Intenta abrir el archivo index.html en tu navegador y mira el resultado:

Creating Drag and Drop Elements with Pure, Vanilla JavaScript 1

Aunque hemos completado la estructuración y añadido estilos, los elementos siguen siendo estáticos. Eso significa que no podemos mover ni desplazar los elementos hasta que les añadamos funciones dinámicas. En el siguiente paso, daremos la bienvenida a JavaScript y a los comportamientos dinámicos.

Paso 4: Introducción a JavaScript

En este paso, introduciremos JavaScript y haremos que todos los elementos de arrastre sean funcionales. En el archivo JS, establece los elementos que vamos a necesitar. Definamos draggable y containers para arrastrar y soltar elementos respectivamente.

Agrega las dos líneas de código en el archivo scripts.js :

A continuación, configura todos los escuchas de eventos. Comienza agregando el elemento dragstart como el primer escucha de eventos para add a la lista de clases. De manera similar, agrega el elemento dragend como el segundo escucha de eventos para remove de la lista de clases.

Adjunta los siguientes EventListeners en tu archivo scripts.js :

A continuación, agrega el dragover EventListener para pasar el cursor y mover nuestros elementos. Establece el elemento draggable actual usando querySelector y luego añade el elemento arrastrable al contenedor actual:

Por defecto, soltar dentro de un elemento está deshabilitado. Usa e.preventDefault para habilitarlo:

A continuación, crea un elemento para determinar la posición del mouse. Comienza creando una función getDragAfterElement que tomará dos parámetros. El primero será un container y el segundo parámetro y se encargará de la posición vertical del mouse. Ahora, usa la función querySelectorAll para obtener nuestros elementos arrastrables. Define draggableElements para todos los elementos arrastrables dentro del contenedor:

A continuación, llama a una función reduce que recorrerá la lista de elementos arrastrables y también especificará el elemento único después del cursor del mouse. A continuación, return devuelve la función reduce agregando el primer elemento como closest y el segundo como un child. Además, iguala el offset y agrega condiciones.

Agrega las siguientes líneas de código en el scripts.js archivo:

En la última parte, estableceremos condiciones y comprobaremos el AfterElements. Comprueba el AfterElements usando if-else condiciones, y si está establecido en null, agrega un hijo al final de la lista usando appendChild. De lo contrario, agrega el elemento draggable y afterElement como parámetros en la insertBefore función.

Incluye esto en el scripts.js archivo:

Ahora tenemos la configuración necesaria lista. Abre tu navegador y ejecuta index.html en tu navegador. Verás la página “My Morning Scheduler” con opciones para arrastrar y soltar. La línea blanca en el medio actúa como un puente para diferenciar entre las tareas ya realizadas y las que aún están por hacerse:

Conclusión

Arrastrar y soltar es una excelente opción para usar en los sitios web modernos. En esta guía, hemos utilizado un puñado de controladores de eventos para que el tutorial sea fácil para los principiantes. Hay ocho controladores de eventos en total y te animamos a usarlos a medida que avances. Una vez que te sientas cómodo usando las funciones y el código utilizado en este tutorial, puedes profundizar más en temas de JavaScript como jQuery y comenzar a explorar. También puedes intentar crear una aplicación de tareas pendientes, un rastreador de progreso semanal utilizando las funciones de fecha y hora de JavaScript, y otras aplicaciones utilizando los conceptos que acabas de aprender.

Para aprender más sobre JavaScript y temas de desarrollo web, consulta estos recursos de nuestro blog:

¡Feliz computación!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.