web-dev-qa-db-ja.com

要素に複数のCSSトランジションを追加する方法

それはかなり簡単な質問ですが、私はCSSトランジションプロパティに関する非常に良いドキュメントを見つけることができません。これがCSSスニペットです。

    .nav a
{
    text-transform:uppercase;
    text-decoration:none;
    color:#d3d3d3;
    line-height:1.5 em;
    font-size:.8em;
    display:block;
    text-align:center;
    text-shadow: 0 -1.5em 0 rgba(255, 255, 255, 0.15);
    -webkit-transition: color .2s linear;
    -moz-transition: color .2s linear;
    -o-transition: color .2s linear;
    transition: color .2s linear;
    -webkit-transition: text-shadow .2s linear;
    -moz-transition: text-shadow .2s linear;
    -o-transition: text-shadow .2s linear;
    transition: text-shadow .2s linear;
}

.nav a:hover
{
    color:#F7931E;
    text-shadow: 0 1.5em 0 rgba(247, 147, 30, 0.15);
}

ご覧のとおり、トランジションプロパティはお互いを上書きしています。現状では、テキストの影はアニメーションしますが、色は変わりません。両方を同時にアニメートするにはどうすればよいですか。答えてくれてありがとう。

288
Eric Thoma

遷移プロパティは、遷移をサポートするすべてのブラウザでカンマで区切られています。

.nav a {
  transition: color .2s, text-shadow .2s;
}

easeはデフォルトのタイミング関数なので、指定する必要はありません。本当にlinearが欲しい場合は、それを指定する必要があります。

transition: color .2s linear, text-shadow .2s linear;

これは繰り返しが始まるので、複数のプロパティにまたがって同じ時間とタイミングの関数を使うのであれば、速記の代わりにさまざまなtransition-*プロパティを使うのが最善です。

transition-property: color, text-shadow;
transition-duration: .2s;
transition-timing-function: linear;
510
coreyward

また、次のようにしてもかなり簡単にできます。

.nav a {
    -webkit-transition: all .2s;
}
35
XML

次のようなものは、同時に複数のトランジションを可能にします。

-webkit-transition: color .2s linear, text-shadow .2s linear;
   -moz-transition: color .2s linear, text-shadow .2s linear;
     -o-transition: color .2s linear, text-shadow .2s linear;
        transition: color .2s linear, text-shadow .2s linear;

例: http://jsbin.com/omogaf/2

29
Delan Azabani

すべてのプロパティを同じアニメーションにする場合は、それぞれを個別に設定してコードを繰り返さないようにすることができます。

 transition: all 2s;
 transition-property: color, text-shadow;

それについての詳細がここにあります: 複数のプロパティを持つCSS遷移の省略形?

不要な動作や予期しないパフォーマンスの低下につながる可能性があるため、プロパティallを使用しないでください(transition-propertyが 'all'を上書きします)。

22
Corey Young
.nav a {
    transition: color .2s, text-shadow .2s;
}
2
Locoroco

デュレーション、ディレイ、タイミング機能に異なる値を設定して複数のトランジションを設定することが可能です。異なるトランジションを分割するには,を使います

button{
  transition: background 1s ease-in-out 2s, width 2s linear;
  -webkit-transition: background 1s ease-in-out 2s, width 2s linear; /* Safari */
}

参照: https://kolosek.com/css-transition/

1
Nesha Zoric

これは、2つのプロパティを同時に移行するためのLESSミックスインです。

.transition-two(@transition1, @transition1-duration, @transition2, @transition2-duration) {
 -webkit-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
    -moz-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
      -o-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
          transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
}
1
user1445230

プロパティをまったく指定しないようにすることもできます。

#box {
  transition: 0.4s;
  position: absolute;
  border: 1px solid darkred;
  bottom: 20px; left: 20px;
  width: 200px; height: 200px;
  opacity: 0;
}

#box.on {
  opacity: 1;
  height: 300px;
  width: 500px;
 }
0
jerblack