Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Creación de divs mediante offset hacia cualquier dirección

Estas en el tema de Creación de divs mediante offset hacia cualquier dirección en el foro de Javascript en Foros del Web. Buenas compañeros. He creado un script para crear un recuadro arrastrando el mouse (compatibilizado con eventos touch) y el ancho y el alto de la ...
  #1 (permalink)  
Antiguo 18/12/2013, 05:06
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Pregunta Creación de divs mediante offset hacia cualquier dirección

Buenas compañeros.

He creado un script para crear un recuadro arrastrando el mouse (compatibilizado con eventos touch) y el ancho y el alto de la caja lo designa el punto de inicio XY y el punto final al levantar el mouse o el dedo. Es tal que así :

Código Javascript:
Ver original
  1. $('#container').on(TouchMouseEvent.MOVE, function(e){
  2.         if(self.holdCreateMask === true) {
  3.             e.preventDefault(); // prevención de selección de contenido
  4.             if(self.mask.click === true){
  5.                                 // si estamos haciendo click y arrastrando pintamos la caja
  6.                 $('#maskSquare').css({
  7.                     width: (e.pageX-offset.left) - self.mask.xCoord,
  8.                     height: (e.pageY-offset.top) - self.mask.yCoord
  9.                 });
  10.             }
  11.         }
  12.     });

¿Cuál es el problema? El problema es que si nos convertimos de repente en chinos, y en lugar de crearlo de izquierda a derecha y de arriba a abajo lo queremos hacer en otra dirección (derecha>izquierda, abajo>arriba y la combinación de ellos). Tendría que dejar correr unos píxeles para conocer la dirección y posicionar en el MOUSEDOWN como absolute right, bottom, left y/o top según se necesite.

Alguien tiene alguna idea de cómo hacer esto de forma eficaz sin efectos raros de creación, o evitar que tenga que eliminar la capa cuando se cambie la dirección y volver a insertarla?

Gracias y un saludo.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #2 (permalink)  
Antiguo 18/12/2013, 05:09
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Creación de divs mediante offset hacia cualquier dirección

Por cierto, la creación es tal que así:
Código Javascript:
Ver original
  1. var maskDiv = $('<div/>').attr({
  2.      'id':'maskSquare',
  3.      'class':'mask-square'
  4. }).css({
  5.      'left':self.mask.xCoord,
  6.      'top':self.mask.yCoord
  7. })

es decir, al tener touchstart o mousedown creo el elemento y lo posiciono absoluto con left y top donde corresponde según el ratón.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 18/12/2013, 06:51
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Creación de divs mediante offset hacia cualquier dirección

No le he dedicado mas de 5 minutos, se puede pulir más. Meter eventos touch corre de tu cuenta.
http://jsfiddle.net/9fbpu/
  #4 (permalink)  
Antiguo 18/12/2013, 08:37
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Creación de divs mediante offset hacia cualquier dirección

Qué bueno! Si es que no se me había ocurrido las funciones del Math().

Mil gracias! Lo estoy puliendo un poco pero lo doy por solucionado.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: coordenadas, mascara, offset
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:18.