2010-12-10 16 views
210

Estoy tratando de hacer un efecto de transición con el color de fondo cuando cierro los elementos del menú, pero no funciona. Aquí está mi código CSS:Transición del color de fondo

#content #nav a:hover { 
    color: black; 
    background-color: #AD310B; 
    /* Firefox */ 
    -moz-transition: all 1s ease-in; 
    /* WebKit */ 
    -webkit-transition: all 1s ease-in; 
    /* Opera */ 
    -o-transition: all 1s ease-in; 
    /* Standard */ 
    transition: all 1s ease-in; 
} 

El div #nav es una lista de elementos de menú ul.

+0

Just FYI, esto funciona en Firefox ahora. Probado en FF9. –

Respuesta

436

Hasta donde yo sé, las transiciones actualmente funcionan en Safari, Chrome, Firefox, Opera e Internet Explorer 10+.

Esto debería producir un efecto de fundido para usted en estos navegadores:

a { 
 
    background-color: #FF0; 
 
} 
 

 
a:hover { 
 
    background-color: #AD310B; 
 
    -webkit-transition: background-color 1000ms linear; 
 
    -ms-transition: background-color 1000ms linear; 
 
    transition: background-color 1000ms linear; 
 
}
<a>Navigation Link</a>

Nota: Como ha señalado Gerald en los comentarios, si se pone la transición en la a , en lugar de a:hover volverá al color original cuando el mouse se aleje del enlace.

Esto podría ser útil, también: CSS Fundamentals: CSS 3 Transitions

+31

También puede poner las transiciones en 'content #nav a' para volver al original cuando el usuario aleja el mouse del enlace. –

+2

Violín con ** desplazarse ** y ** hacer clic ** transiciones en: [jsfiddle.net/K5Qyx](http://jsfiddle.net/K5Qyx/) –

+3

¿No sería mejor poner la 'transición:' en el no-hover? Creo que cada vez que el usuario se desplaza, la transición se compila ... –

46

Para mí, es mejor poner los códigos de transición con los selectores originales/mínimos que con el: hover o cualquier otro selectores adicionales:

#content #nav a { 
 
    background-color: #FF0; 
 
    
 
    -webkit-transition: background-color 1000ms linear; 
 
    -moz-transition: background-color 1000ms linear; 
 
    -o-transition: background-color 1000ms linear; 
 
    -ms-transition: background-color 1000ms linear; 
 
    transition: background-color 1000ms linear; 
 
} 
 

 
#content #nav a:hover { 
 
    background-color: #AD310B; 
 
}
<div id="content"> 
 
    <div id="nav"> 
 
     <a href="#link1">Link 1</a> 
 
    </div> 
 
</div>

+6

No es que sea mejor o peor. Es solo que si especifica la transición en la lement en sí, se animará cuando el elemento quede suspendido y cuando se "desvíe". Mientras que si lo aplicas al: hover, tendrás una animación cuando el mouse entre, pero no cuando salga. – LucasBeef

+5

Esta solución es en general mejor. El efecto de transición debería, y debería esperarse, desvanecerse con el vuelo estacionario y desvanecerse con el desenfoque. – Chizzle

Cuestiones relacionadas