2011-12-19 9 views
51

¿Hay alguna manera de retrasar el evento: Hover sin usar javascript? Sé que hay una manera de retrasar las animaciones, pero no he visto nada sobre el retraso del evento: Hover.Demora: ¿Desplazarse en CSS3?

Editado ...

Lo sentimos, debería haber incluido este, para empezar ... Estoy construyendo una suckerfish hijo de como menú. Me gustaría simular lo que hace hoverIntent sin agregar el peso extra JS. Preferiría tratar esto como una mejora progresiva y no convertir a JS en un requisito para usar el menú.

Actualizado

Aquí está el código final ... http://jsfiddle.net/aEgV3/

Gracias por toda la ayuda!

+1

Interesante pregunta, pero creo 'no; no sin JavaScript es probable que sea la respuesta, desafortunadamente. –

Respuesta

107

Bueno .. puede utilizar transiciones para retrasar el efecto :hover desea, si el efecto se basa CSS ..

Por ejemplo

div{ 
    transition: 0s background-color; 
} 

div:hover{ 
    background-color:red;  
    transition-delay:1s; 
} 

esto retrasará la aplicación de los los efectos de activación (background-color en este caso) por un segundo.


Demostración de retardo tanto en flotar y bajar en http://dabblet.com/gist/1498443

Demostración de retraso sólo en vuelo estacionario en al http://dabblet.com/gist/1498446


Vendor Specific Extentions for Transitions y W3C CSS3 transitions

+1

Es posible que desee agregar los prefijos del navegador a su respuesta para completar. – ThinkingStiff

+0

@ThinkingStiff, buen punto ... Se agregó una referencia a MDN –

+0

Actualicé mi pregunta ... No estoy seguro de si una transición funcionaría en mi caso o no. Tengo submenús colocados en la pantalla y vueltos a colocar en vuelo estacionario. –

0

Para una apariencia más estética :) puede ser:

left:-9999em; 
top:-9999em; 

posición para .sNv2 .nav UL puede ser reemplazado por z-index:-1 y z-index:1 para .sNv2 .nav LI:Hover UL

4
div { 
    background: #dbdbdb; 
    -webkit-transition: .5s all; 
    -webkit-transition-delay: 5s; 
    -moz-transition: .5s all; 
    -moz-transition-delay: 5s; 
    -ms-transition: .5s all; 
    -ms-transition-delay: 5s; 
    -o-transition: .5s all; 
    -o-transition-delay: 5s; 
    transition: .5s all; 
    transition-delay: 5s; 
} 

div:hover { 
    background:#5AC900; 
    -webkit-transition-delay: 0s; 
    -moz-transition-delay: 0s; 
    -ms-transition-delay: 0s; 
    -o-transition-delay: 0s; 
    transition-delay: 0s; 
} 

Esto agregará un retraso de transición, que será aplicable a casi todos los navegadores ..