2つの「ページ」のうちの1つ、つまり<divs>
を穏やかな遷移で表示すると、他のページがスライドしている間にスライドするページが見えます。私の最終的なアプリケーションでは、移行は私のバックエンドから(おそらくWebSocketメッセージで)起動されます。CSSトランジションを使用して同じ方向から見た遷移コンテンツ
ページを左からスライドし、効果を 'ループ'させたいと思います。つまり、最初のページに戻ると、それはまだ左からスライドします。
以下のスニペットを作成しました。このスニペットは、CSS3トランジションを使用して目的の効果を達成するための私の現在の計画を示しています。それは動作しますが、非常にclunky感じています。
次のように動作します。
#page1
ビューの開始と#page2
は、それがそれぞれin-frame
とout-of-frame
クラスを使用して、その幅によって相殺水平位置のしています。 #page1
#page2
への移行については
、私は単にそれらの幅によって、両方の「ページ」を再配置するtransform:translateX()
を使用し、page
クラスの遷移特性がトランジションエフェクトを処理クラスを適用します。
の移行が終了するのを私は待つループのような振る舞いを行うために、私は戻って#page2
の左に画面外であることに#page1
をもたらすことを意図しているin-frame
またはout-of-frame
クラスを持っているページを切り替えます。 しかし、この移行が遷移として実行されないようにするには、私は.notransition
クラスを適用しなければなりません。
私の質問:CSSトランジションを使用してこの動作を実現するには、より良い方法がありますか?
私はブートストラップのカルーセルが私のためにそれを行うことができると知っていますlike thisしかし、私が間違っているかどうかを知ることはうれしいでしょう。
// add transition finished handler to each page
$('.page').on('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
// toggle in/out of frame
$(this).toggleClass('in-frame')
.toggleClass('out-of-frame')
.addClass('notransition')
.removeClass('slide')
})
$('body').click(function() {
// start transform
$('.page').removeClass('notransition').addClass('slide')
})
html,
body {
height: 100%;
overflow: hidden;
text-align: center;
font-size: 2em;
}
#content {
position: relative;
height: 100%;
}
.page {
position: absolute;
top: 0;
height: 100%;
width: 100%;
-webkit-transition: transform 2s cubic-bezier(0.19, 1, 0.22, 1);
-moz-transition: transform 2s cubic-bezier(0.19, 1, 0.22, 1);
-o-transition: transform 2s cubic-bezier(0.19, 1, 0.22, 1);
transition: transform 2s cubic-bezier(0.19, 1, 0.22, 1);
}
.slide {
-webkit-transform: translateX(100%);
-moz-transform: translateX(100%);
-o-transform: translateX(100%);
transform: translateX(100%);
}
.in-frame {
left: 0%;
}
.out-of-frame {
left: -100%;
}
.notransition {
-webkit-transition: none !important;
-moz-transition: none !important;
-o-transition: none !important;
transition: none !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="content">
<div id="page1" class="page in-frame" style="background: #d67e56;">
Main Page <br> (Click Me)
</div>
<div id="page2" class="page out-of-frame" style="background: #d94e4e;">
Other Page <br> (Click Me)
</div>
</div>
お寄せいただきありがとうございます!私がレールから完全に離れていないことを知ってうれしいです。 – John