2013-08-28 13 views
8

Quando si analizzano eventi del mouse jQuery su diversi tipi di Animazione CSS, si nota che translate3d causa il passaggio del mouse e altri eventi non correttamente.translate3d() causando eventi di hover/clic jQuery per non attivare correttamente

In un esempio di base, sto animando un elenco di blocchi da destra a sinistra.

In caso di rollover, sto impostando lo sfondo LI librato su VERDE.

nota: i test sono costruiti per webkit

HTML

<div class="container"> 
    <ul> 
     <li>content</li> 
     <li>content</li> 
     ... 
    </ul> 
</div> 

CSS

.container{ 
    position: absolute; 
    left: 600px; 
    top: 0; 
} 

.container ul{ 
    list-style: none; 
    width: 9999px; 
} 

.container ul li{ 
    width: 200px; 
    height: 400px; 
    float: left; 
    background: red; 
    margin: 4px; 
} 

.animate-3d{ 
    -webkit-transition: -webkit-transform 10s linear; 
    -webkit-transform: translate3d(-6000px, 0px, 0px) 
} 

.animate-transition{ 
    transition: left 10s linear; 
    left: -6000px; 
} 

jQuery

Come potete vedere nel violino accompagnato, translate3d mostra hover molto erotici mentre la traduzione è ok.

qualcuno ha qualche indizio sul motivo per cui questo è?

http://jsfiddle.net/jkusachi/j2PSw/2/

+0

farò notare che le aleggia lavorano per translate3d dopo l'animazione è terminata. Una volta terminata l'animazione e "resetta" l'animazione, se passi il mouse dentro e fuori dal rosso nell'area bianca, sembra che il mouseenterenter/mouseleave non sia quando il mouse è sopra le caselle ... abbastanza interessante ... – jkusachi

+0

Hai mai trovato una soluzione per questo problema? – luwes

risposta

0

Ti aspetti hover deve essere attivato quando il mouse è fermo e un obiettivo si sposta sotto il mouse? Gli eventi vengono inviati solo quando il mouse è in movimento o si fa clic su un pulsante se si richiama correttamente. Se il mouse non sta facendo nulla, nulla si innescherà, incluso il passaggio del mouse. Gli eventi sono basati sull'input dell'utente, quindi se non vi è alcun input da parte dell'utente, non ci sono eventi.

Si può vedere che se si sposta il mouse lentamente avanti e indietro sugli elementi, lo stato di passaggio del mouse funzionerà correttamente. Il problema sembra solo apparire se non si sposta il mouse.

Cioè, a meno che mi manca il problema, quindi per favore chiarire se non sto capendo.

+0

mi aspetto che l'hover venga attivato al movimento del mouse. Se vedi il video allegato, anche durante il movimento del mouse il passaggio del mouse non viene attivato con translate3d: [stackoverflow-18496551.mov] (https://dl.dropboxusercontent.com/u/2182459/stackoverflow-18496551.mov) . Il codice stesso è piuttosto semplice quindi sono le mie domande. Funziona bene per la transizione, solo non translate3d. – jkusachi

+0

Quale browser, versione e sistema operativo stai utilizzando? Non è stato possibile replicarlo su Safari, Chrome, Firefox o IE (VM) su OS X 10.7 – deadbabykitten