2013-01-08 3 views
8

フロントとバックのdivを常に同じ方向に反転させようとしています。私はCSSとJavaScriptでフリップを実装しましたが、右に回転させてから左に戻すのではなく、常に回転させる方法を考えるのは苦労します。css3トランジションを常に同じ方向に回転させます

私は基本的にfollwing CSS

/* flip speed goes here */ 
    .flipper { 
    -webkit-transition: 0.6s; 
    -webkit-transform-style: preserve-3d; 

    -moz-transition: 0.6s; 
    -moz-transform-style: preserve-3d; 

    -o-transition: 0.6s; 
    -o-transform-style: preserve-3d; 

    transition: 0.6s; 
    transform-style: preserve-3d; 

    position: relative; 
    border-radius: 5px; 
    -webkit-border-radius: 5px; 
    padding: 5px; 
    margin-left: 3px; 
    z-index: 3; 
    width: 160px; 
    height: 145px; 
    display:block; 
    } 

でのdivを使用して、ユーザーがそれをクリックしたとき、私はクラスを追加し、このCSSを変更するDIVに「裏返し」:

 /* flip the pane when hovered */ 
    .flip-container.flipped .flipper { 
    -webkit-transform: rotateY(180deg); 
    -moz-transform: rotateY(180deg); 
    -o-transform: rotateY(180deg); 
    transform: rotateY(180deg); 
    } 

私はちょうど回転角度を増やすべきですか?他のアイデア?ここで

は、私はそれを変換して行うことができることはないと思う現状とfiddle

+0

http://jsfiddle.net/7WgKL/ 2/ – tmaximini

+0

http://stackoverflow.com/questions/2584138/css3-continous-rotate-animation-just-like-a-loading-sundialこれを見ましたか? –

+0

こんにちはアレックス、これを見たことがないが、これは本当に私の質問に答えることはありません。問題は180度から0度に戻っ​​たときに回転の方向が変わることです。 – tmaximini

答えて

2

で完全なCSSです。 キーフレームを使ってもかまいません。同様のコード:

@-webkit-keyframes rotate1 { 
    from {-webkit-transform: rotate(0deg)} 
    to {-webkit-transform: rotate(180deg)} 
} 
@-webkit-keyframes rotate2 { 
    from {-webkit-transform: rotate(180deg)} 
    to {-webkit-transform: rotate(360deg)} 
} 

#rotable { 
    background-color: red; 
    -webkit-animation-name: rotate2; 
    -webkit-animation-duration: 3s; 
    -webkit-transform: rotate(180deg); 
} 

#rotable:hover { 
    background-color: yellow; 
    -webkit-animation-name: rotate1; 
    -webkit-animation-duration: 3s; 
} 

あなたが欲しいものと同様のことをします。回転方向は常に同じであることに注意してください。

別働か、(遷移が反対方向に行くと変化のために...)遷移アニメーションを混合

.container { 
 
    perspective: 500px; 
 
} 
 

 
.test { 
 
    transform: rotate(360deg); 
 
    transition: transform 4s; 
 
} 
 

 
.container:hover .test { 
 
    transform: rotateY(180deg); 
 
    animation: turn 4s; 
 
} 
 

 
@keyframes turn { 
 
    from {transform: rotate(0deg);} 
 
} 
 

 
div { 
 
    display: inline-block; 
 
    width: 200px; 
 
    height: 200px; 
 
} 
 

 
.test { 
 
    background-color: lightblue; 
 

 
}
<div class="container"> 
 
<div class="test">TEST</div> 
 
</div>

+1

アニメーションを使用する必要はありませんが、実際にはトランジションで行うことができます。アニメーションは、より複雑なタイミング問題に対処する必要がある場合に便利です。このような単純なケースでは、開始点と終了点だけで、移行が最も効率的な方法になります。さらに、アニメーションをトリガーするために複数のクリックをしようとすると(これはOPがホバーの例からコードをコピーしたと思われます)、これは中断されます(私は思います)。この回答にはアニメーションの面白い使い方がありますが、他の問題の役に立つトリックだと思います。 – thisiate

+2

@thisiateもちろん、現在のトランスフォームの回転を調べて、常にそれを増やすことができます。私の答えでは、私はOPが望んでいた場所を固定スタイルとしていました。とにかく、良い点。 – vals

+0

@valsはこれが本当であるように確信しています。しかし、変数が最終的にラップされるので(フロートが大きすぎても事実上起こりませんが)、これはちょっと面倒です。それを行うためのよりクリーンな方法があるはずですが、私はそれをまだ見つけていません。 – clearlight

関連する問題