2011-07-09 14 views
102

así que tengo las siguientes transiciones CSS unidos al elemento:activar/desactivar heredados transiciones CSS3

a { 
    -webkit-transition:color 0.1s ease-in, background-color 0.1s ease-in ; 
    -moz-transition:color 0.1s ease-in, background-color 0.1s ease-in; 
    -o-transition:color 0.1s ease-in, background-color 0.1s ease-in; 
    transition:color 0.1s ease-in, background-color 0.1s ease-in; 
} 

¿Hay una manera de desactivar estas transiciones heredadas en una serie de elementos específicos?

a.tags { transition: none; } 

Parece que no hace el trabajo.

Respuesta

147

El uso de transition: none parece estar apoyada (con un ajuste específico para Opera) dado el código HTML siguiente:

<a href="#" class="transition">Content</a> 
<a href="#" class="transition">Content</a> 
<a href="#" class="noTransition">Content</a> 
<a href="#" class="transition">Content</a> 

... y CSS:

a { 
    color: #f90; 
    -webkit-transition:color 0.8s ease-in, background-color 0.1s ease-in ; 
    -moz-transition:color 0.8s ease-in, background-color 0.1s ease-in; 
    -o-transition:color 0.8s ease-in, background-color 0.1s ease-in; 
    transition:color 0.8s ease-in, background-color 0.1s ease-in; 
} 
a:hover { 
    color: #f00; 
    -webkit-transition:color 0.8s ease-in, background-color 0.1s ease-in ; 
    -moz-transition:color 0.8s ease-in, background-color 0.1s ease-in; 
    -o-transition:color 0.8s ease-in, background-color 0.1s ease-in; 
    transition:color 0.8s ease-in, background-color 0.1s ease-in; 
} 
a.noTransition { 
    -moz-transition: none; 
    -webkit-transition: none; 
    -o-transition: color 0 ease-in; 
    transition: none; 
} 

JS Fiddle demo.

Probado con Chromium 12, Opera 11.xy Firefox 5 en Ubuntu 11.04.

La adaptación específica a Opera es el uso de -o-transition: color 0 ease-in; que se dirige a la misma propiedad que se especifica en las otras transition reglas, pero establece el tiempo de transición a 0, lo que impide eficazmente la transición de ser notable. El uso del selector a.noTransition es simplemente para proporcionar un selector específico para los elementos sin transiciones.


Editado a @Frédéric Hamidi's answer en cuenta que, utilizando all (para Opera, por lo menos) es mucho más concisa que enumerar a cabo cada propiedad-nombre de la persona que no quiere tener transición.

Updated JS Fiddle demo, showing the use of all in Opera: -o-transition: all 0 none, siguiendo la auto-eliminación de la respuesta de .

+0

Ahh, necesitaba agregar las etiquetas específicas del navegador antes de la transición. Malvado, ¡salud! – Scotty

+0

Gracias por la ópera sin información de transición. –

+4

Opera es realmente aburrido con esta diferencia –

19

Si desea desactivar una sola propiedad de transición, que puede hacer:

transition: color 0s; 

(desde un segundo paso por cero es igual que ninguna transición.)

+0

Un controlador de rendimiento puede ofenderse, pero parece legítimo para deshabilitar una sola propiedad. – doublejosh

0

También puede desheredar a todas las transiciones en el interior un elemento que contiene:

CSS:

.noTrans *{ 
-moz-transition: none; 
-webkit-transition: none; 
-o-transition: color 0 ease-in; 
transition: none; 
} 

HT ML:

<a href="#">Content</a> 
<a href="#">Content</a> 
<div class="noTrans"> 
<a href="#">Content</a> 
</div> 
<a href="#">Content</a> 
+1

Hmm, probablemente no aconsejaría hacerlo de esta manera. La regla no se aplica al elemento al que se aplica la clase, solo a los niños, y se aplica a * cada * niño, incluso aquellos que no necesitan la aplicación de la regla, lo que podría conducir a problemas de especificidad y escalabilidad más adelante. línea. – Scotty

+0

Esta fue una solución muy útil para mí, recientemente, para eliminar las transiciones de un elemento de mapa de Google, que estaban agregando rareza al comportamiento del mapa. – freeworlder

Cuestiones relacionadas