1

CSSトランジションを使用して、移動の前半で要素をわずかに水平から外して傾ける(回転させる)ことができますか?また、動きの終わりに達すると、後半に要素を水平に戻すことができますか?360度回転したくない。少し傾けてから、もう一度後ろに傾けます。

これが私が念頭に置いている移行の始まり、中間、そして終わりの写真です:

動作中の傾き

この質問は、それを見ることによって最もよく示されます。これが私が達成したいことを示すフィドルです-しかし私はJavaScriptではなくCSSトランジションでそれを達成したいと思います:

http://jsfiddle.net/bmorearty/S5Us6/22/

これを実行するときは、灰色のボックスを注意深く観察してください。動作中に少し傾いてから、途中で傾きが逆になります。つまり、静止すると、傾きがなくなります。

これは、クラスを要素に追加するだけで、ある状態から別の状態への1回の遷移で発生するようにします。これは、2つの遷移ではなく、1つの遷移の終わりと次の遷移の時間を計る必要があるためです。

答えにはtransition-delay、および/またはが組み込まれると思い@keyframesます。

ありがとう。

4

3 に答える 3

0

あなたはこのようなことをすることができます。 http://cdpn.io/sIxFA

もちろん、好きなように回転をスムーズにし、クリック時に回転クラスを追加することができます。

于 2013-02-21T18:40:16.537 に答える
0

これはそのためのCSSになります:

#card {
    padding: 2em;
    border: 1px solid gray;
    display: inline-block;
    position: relative;
    background-color: #eee;
    /*instead of infinite you can add a number of times you want it running*/
    animation: moving infinite 6s;

}
@keyframes moving {
    0%{
      margin: 0;
    }
  50% {
 -webkit-transform: rotate(45deg);
  }
  100% {
    margin: 50px;
    }
}
于 2013-02-21T18:47:19.050 に答える
0

わかった!

解決策は、キーフレームでCSSアニメーションを使用することです。このアニメーションは、50%の途中で回転を変換し(たとえば、約8度に)、最後に回転を0度に戻します。かなり甘いです。

JSBinのデモは次のとおりです。

http://jsbin.com/ogiqad/4/edit

(以下のコードは-webkitを使用していますが、他のすべてのブラウザーのバリエーションを追加して、より多くのブラウザーで機能させることができます。)

@-webkit-keyframes tilt-and-move {
  0% {
    left: 0;
    top: 0;
  }
  50% {
    -webkit-transform: rotate(8deg);
  }
  100% {
    left: 100px;
    top: 100px;
  }
}

#card {
    position: relative;
}

#card.moved {
    left: 100px;
    top: 100px;
    -webkit-animation-duration: 0.4s;
    -webkit-animation-name: tilt-and-move;
}
于 2013-02-21T18:56:23.200 に答える