継承されたCSS3トランジションを無効にする/オフにする


117

だから私はa要素にアタッチされた次のCSS遷移を持っています:

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; 
}

特定のa要素でこれらの継承された遷移を無効にする方法はありますか?

a.tags { transition: none; } 

仕事をしていないようです。

回答:


166

transition: none次のHTML の場合、の使用はサポートされているようです(Operaの特定の調整により)。

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

...そして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デモ

Ubuntu 11.04のChromium 12、Opera 11.x、Firefox 5でテスト済み。

Operaへの特定の適応-o-transition: color 0 ease-in;は、他のtransitionルールで指定されたものと同じプロパティをターゲットとする使用ですが、遷移時間をに設定し0、効果的に遷移が目立たないようにします。a.noTransitionセレクターの使用は、遷移のない要素に特定のセレクターを提供することです。


@FrédéricHamidiの回答であるall(少なくともOperaの場合)を使用すると、移行したくない個々のプロパティ名をリストするよりもはるかに簡潔になることに注意して編集してください。

all-o-transition: all 0 none@Frédéricの回答の自己削除に続いて、Opera での使用を示すJS Fiddleデモを更新しました


ああ、私は移行前にブラウザ固有のタグを追加する必要がありました。邪悪な、乾杯!
スコッティ

オペラの移行に関する情報はありません。
pedro_sland

5
Operaはこの違いに本当につまらない
JuniorMayhé12年

1
なぜ次のようなことができないのですか?transition:color none、background-color 0.1s ease-in;

26

単一の遷移プロパティを無効にする場合は、次のようにできます。

transition: color 0s;

(ゼロ秒遷移は遷移なしと同じであるため)。


パフォーマンスステッカーは不快な思いをするかもしれませんが、これは単一のプロパティを無効にすることの正当性のようです。
doublejosh 2018年

現在、Chromeでは機能しません。これは、継承された遷移をすべて無効にするだけです。
反転

@Inversionの例を挙げていただけますか
ウィルマッデン

@WillMadden、ここではjsfiddle.net/312bu8poで初期状態を試し、cssで準備された行のコメントをleft外します—の遷移は削除されます。
反転

2

すべての遷移を削除する別の方法は、unsetキーワードを使用することです:

a.tags {
    transition: unset;
}

の場合transitionunsetは継承されたプロパティではないinitialため、と同等transitionです。

a.tags {
    transition: initial;
}

の特定の構文について考える必要なく、これらのソリューションがすぐに正しいことを知ってunsetおり、それinitialを伝えることができる読者transition


unset&initialはIEでは十分にサポートされていません
アレンスキー

caniuse.com/#feat=css-unset-value-IE11のサポートが必要な場合は、おそらくイニシャルを使用します。
Nick Middleweek

0

包含要素内のすべての遷移を継承解除することもできます。

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>

2
うーん、私はおそらくこの方法でそれを行うことをお勧めしません。ルールは、クラスを適用する要素には適用されず、子だけに適用されます。また、ルールを適用する必要のない子も含め、すべての子に適用されます。これにより、具体性と拡張性の問題が発生する可能性があります。
スコッティ

これは最近、Googleのマップ要素から遷移をグローバルに削除する非常に便利な解決策でした。これにより、マップの動作に奇妙さが加わりました。
freeworlder 2016

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.