2012-06-23 16 views
6

arrastró por lo que hay algunos eventos que puedo usar para el manejo de la fricción & caída:Cómo el estilo de elemento

https://developer.mozilla.org/en/DragDrop/Drag_and_Drop

hay un evento drag, que se dispara durante el tiempo que el elemento está siendo arrastrado. Puedo controlar el estilo del elemento de origen o el contenedor desplegable de destino, pero ¿cómo puedo diseñar el elemento "fantasma" que está creando el navegador?

quiero quitar el icono "desactivado" de que cuando el elemento se encuentra en una zona no pueda arrastrar y reemplazarlo con un "cursor de movimiento" icono

Esto es lo que tengo hasta ahora:

http://jsfiddle.net/YkaCM/

enter image description here

Respuesta

2
No

muy seguro acerca de otros navegadores sin embargo el objeto dataTransfer contiene una propiedad llamada mozCursor. Esto le permite cambiar el cursor en el estado de arrastre, sin embargo, esta es una propiedad de Mozilla.

https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/mozCursor

Un ejemplo del uso de este se puede encontrar en la siguiente ubicación, el ajuste se cambia en dragstart (conjunto de usar por defecto 'flecha' cursor), dragover (conjunto de usar cursor de arrastre auto (flecha con copia)) y dragleave (restablecimiento de usar por defecto 'flecha' cursor):

http://jsfiddle.net/YkaCM/4/


Prueba las respuestas a:
Javascript: How can I set the cursor during a drag & drop operation on a website?


actualizó su dragover con lo siguiente:

$('#droppable').bind('dragover', function (e) { 
    $(this).addClass('over'); // new 

    ... 

http://jsfiddle.net/YkaCM/1/

+0

gracias, que corrige lo que pensaba que era un fallo del navegador, pero no resuelve mi pregunta: P – Alex

+0

No creo que puedas darle estilo al elemento 'fantasma'. Con Firebug abierto cuando se prueba, no parece mostrar ningún cambio en el HTML. ¿Tiene algún ejemplo de lo que le gustaría lograr? – JonWarnerNet

1

básicamente desea aplicar un estilo específico a los elementos que son hijo de #droppable de nueva creación?

#droppable div { here your code } 
+0

no .. Voy a publicar una captura de pantalla para que quede claro – Alex

13

No puede estilo de manera directa, ya que es un mapa de bits/copia de lo que el elemento parecía cuando comenzó el arrastre:

http://jsfiddle.net/2EvGP/

EDIT:

Usted en realidad puede hacer trampa para lograr esto al cambiar brevemente el estilo del elemento cuando se inicia el arrastre: http://jsfiddle.net/LULbV/

$('#draggable').bind('dragstart', function (e){ 

    [Set style here] 

    setTimeout(function(){ 
    [Reset style here] 
    }, 1); 

    ... 

}); 

Esto funciona sin problemas en Chrome 19, y muestra el cambio de estilo dependiendo de cómo arrastre en Firefox 13. Tendría que restablecer el estilo del elemento arrastrado en la caída.

(Nota Tengo un equipo muy rápido, así que no estoy seguro de si este truco todavía trabajar en máquinas lentas)

+0

Funcionó muy bien, gracias ... intenté utilizar el método setDataImage (y otros métodos de transferencia de datos) antes de usar esta solución con resultados mixtos. Parece que hay comportamientos extraños en la API DnD/Data Transfer. –

Cuestiones relacionadas