Désactiver / désactiver les transitions héritées CSS3
j'ai donc les transitions css suivantes attachées à l'élément a:
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;
}
y a-t-il un moyen de désactiver ces transitions héritées sur des éléments a spécifiques?
a.tags { transition: none; }
Ne semble pas faire le travail.
4 réponses
l'utilisation de transition: none semble être supportée (avec un ajustement spécifique pour Opera) étant donné le HTML suivant:
<a href="#" class="transition">Content</a>
<a href="#" class="transition">Content</a>
<a href="#" class="noTransition">Content</a>
<a href="#" class="transition">Content</a>
...et 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;
}
Testé avec du chrome 12, Opera 11.x et Firefox 5 sur Ubuntu 11.04.
l'adaptation spécifique à Opera est l'utilisation de -o-transition: color 0 ease-in; qui vise la même propriété que spécifié dans les autres règles transition , mais fixe le temps de transition à 0 , ce qui empêche effectivement la transition d'être perceptible. L'utilisation du sélecteur a.noTransition ne sert qu'à fournir un sélecteur spécifique pour les éléments sans transition.
édité pour noter que la réponse de @Frédéric Hamidi , en utilisant all (pour L'Opéra, au moins) est beaucoup plus concise que d'énumérer chaque propriété individuelle-nom que vous ne voulez pas avoir de transition.
mise à jour de la démo de JS Fiddle, montrant l'utilisation de all dans Opera: -o-transition: all 0 none , suite à l'auto-suppression de @Frédéric 'S réponse.
si vous voulez désactiver une propriété de transition simple, vous pouvez faire:
transition: color 0s;
(puisqu'une transition de zéro seconde est la même chose qu'aucune transition.)
une autre façon de supprimer toutes les transitions est avec le unset mot clé:
a.tags {
transition: unset;
}
dans le cas de transition , unset est équivalent à initial , puisque transition n'est pas un bien hérité:
a.tags {
transition: initial;
}
Un lecteur qui connaît unset et initial peut dire que ces solutions sont correctes immédiatement, sans avoir à penser à la syntaxe spécifique de transition .
vous pouvez également déshériter toutes les transitions à l'intérieur d'un élément contenant:
CSS:
.noTrans *{
-moz-transition: none;
-webkit-transition: none;
-o-transition: color 0 ease-in;
transition: none;
}
HTML:
<a href="#">Content</a>
<a href="#">Content</a>
<div class="noTrans">
<a href="#">Content</a>
</div>
<a href="#">Content</a>