11

1 つの要素で個々の CSS3 トランジションのチェーンを 1 つずつ実行する、構文的にクリーンなソリューションは何ですか? 例:

  • 左を 10px に、不透明度を 1 ~ 200ms に設定します。
  • 左を 30px から 500ms に設定
  • 左を 50px に、不透明度を 0 ~ 200ms に設定します。

これは JavaScript なしで実行できますか? そうでない場合、JavaScript できれいにコーディングする方法は?

4

2 に答える 2

12

アニメーションのさまざまなポイントで CSS スタイルを定義し、ブラウザーがトゥイーンを行う CSS3 アニメーションが必要だと思います。http://css3.bradshawenterprises.com/animations/という説明があります。

ターゲット ブラウザのブラウザ サポートを確認する必要があります。

Chrome で動作するデモを次に示します。アニメーションは純粋な CSS3 です。アニメーションの開始とリセットには Javascript のみを使用します。

http://jsfiddle.net/jfriend00/fhemr/

CSS を変更して、Firefox 5 以降でも動作するようにすることができます。

#box {
    height: 100px; 
    width: 100px; 
    background-color: #777;
    position: absolute;
    left: 5px;
    top: 5px;
    opacity: 0;
}

@-webkit-keyframes demo {
    0% {
        left: 10px;
    }
    22% {
        opacity: 1;
    }
    77% {
        left: 30px;
    }
    100% {
        left: 50px;
        opacity: 0;
    }
}

.demo {
    -webkit-animation-name: demo;
    -webkit-animation-duration: 900ms;
    -webkit-animation-iteration-count: 1;
    -webkit-animation-timing-function: ease-in-out;
}    
于 2011-09-03T17:03:39.573 に答える
4

純粋な CSS では、これはtransition-delayプロパティで行うことができ、2 番目と 3 番目のトランジションを遅らせることができます。

個人的には、JS ソリューションの方が良いと思います。タイムアウトまたは「transitioned」イベントを使用してこれを実現できます。

script.aculo.us (またはベータ版 v2: scripty2 )もお勧めします。これは、この種のプログラミングを効率的かつ簡単にするために特に設計されています。

于 2011-09-03T17:08:20.523 に答える