CSS3トランジションを背景位置以外のすべてのプロパティに適用するにはどうすればよいですか?


108

CSSトランジションをbackground-position以外のすべてのプロパティに適用したいと思います。私はそれをこのようにしようとしました:

.csstransitions a {
    -webkit-transition: all 0.3s ease;                  
    -moz-transition: all 0.3s ease;                 
    -o-transition: all 0.3s ease;   
    -ms-transition: all 0.3s ease;          
    transition: all 0.3s ease;
}

.csstransitions a {
    -webkit-transition: background-position 0s ease 0s;                 
    -moz-transition: background-position 0s ease 0s;                
    -o-transition: background-position 0s ease 0s;  
    -ms-transition: background-position 0s ease 0s;         
    transition: background-position 0s ease 0s;
}

最初にすべてのプロパティを遷移に設定し、次にbackground-positionプロパティの遷移のみを上書きしようとしました。

ただし、これにより他のすべてのプロパティもリセットされるようです。つまり、基本的に、どの遷移も発生していないようです。

すべてのプロパティをリストせずにこれを行う方法はありますか?


1
こんにちは、私は実際にこの問題を探しています。許容できる答えはありましたか?
Milche Patern 2013

回答:


143

Firefoxでも機能するソリューションは次のとおりです。

transition: all 0.3s ease, background-position 1ms;

私は小さなデモを作りました:http : //jsfiddle.net/aWzwh/


3
どういうわけか1ms私に0はうまくいきませんでしたが、うまくいきました。
Flimm

@Flimm、どのブラウザを使用していますか?そして、「動かなかった」とはどういう意味ですか、何もアニメーション化しませんでしたか?
Felix Edelmann、2015年

1
私にとって1msは働きませんでしたが、働きまし 1ms noneた!@ericsoco 0msまたは0s作品も。
BCoder 2016

3
時間の単位には単位が必要です。したがって、0は4が機能しないように機能しませんが、4は0が機能するのと同じように機能します。
ESR

2
私はこれを長い間探してきました、ありがとう、@ FelixEdelmann !!
tatsu

17

遅れないことを望みます。たった一行で実現!

-webkit-transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0;
-moz-transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0;
-o-transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0;
transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0; 

Chromeで動作します。CSSプロパティはカンマで区切る必要があります。

これが実際の例です:http : //jsfiddle.net/H2jet/


6
Chromeで試してみましたが、うまくいきません。all遷移特性は、どんな他のすべてを上書きしないように思われます。
アニムソン

2
面白い。他のプロパティでテストしていないと思います。私が試しcolor 0たときはうまくいきましたが、確かにとはうまくいきませんbackground-position 0。でも、background 0私にとっては何の結果を生成しない... ここにjsFiddleだ私はGaming.SEメニューからアップ装備。正直にbackground-position言うと、質問だけが具体的に言及されており、自分を変えようとしていたので、私は最初にテストさえしました。
アニムソン

2
以前はChromeで機能していました。IE11でも引き続き機能しますが、今週の時点では、allプロパティは後で行のすべてを上書きします。
cirrus

1
@cirrusが言ったように、Chromeは0秒の継続時間を尊重しなくなりましたが、代わりに非常に短い継続時間で動作させることができます.1ms
GetFree

1
これは、ゼロ以外の秒の期間が指定されている場合、ChromeとFirefoxの両方で機能します。
Naisheel Verdhan、2015年

4

これを試して...

* {
    transition: all .2s linear;
    -webkit-transition: all .2s linear;
    -moz-transition: all .2s linear;
    -o-transition: all .2s linear;
}
a {
    -webkit-transition: background-position 1ms linear;
    -moz-transition: background-position 1ms linear;
    -o-transition: background-position 1ms linear;
    transition: background-position 1ms linear;
}

「これを試す」コードのみの回答は最適ではありません。あなたがやっていることのいくつかの説明が良いです。
random_user_name


2

遅延のある特定のプロパティを除くすべてのプロパティにトランジションを追加するための簡単な方法を探している人は誰でも、最新のブラウザでも違いがあることに注意してください。

以下の簡単なデモは違いを示しています。完全なコードを確認する

div:hover {
  width: 500px;
  height: 500px;
  border-radius: 0;
  transition: all 2s, border-radius 2s 4s;
}

Chromeは、次のように2つのアニメーション(予想通り)を「結合」します。

ここに画像の説明を入力してください

Safariはそれを「分離」しますが(予想されない場合があります):

ここに画像の説明を入力してください

より互換性のある方法は、特定のプロパティに特定の遷移を割り当てることです(それらの1つに遅延がある場合)。


確かに。これは重要な洞察です。不十分なのは、各プロパティをではなく個別に指定する必要allがあるため、ブラウザ間で目的の動作を得る唯一の方法であることを知っておくと便利です。
random_user_name

1

試してください:

-webkit-transition: all .2s linear, background-position 0;

これは私に似たようなものでうまくいきました。


background-positionを0に修正することは、background-positionから遷移を削除することではありません。ですよね?
Milche Patern 2013

1
これは機能しません。その後、transitionプロパティを再定義することにより、以前の遷移プロパティが存在しないかのように完全にオーバーライドします。それらは統合されません。
アニムソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.