モバイルWebkit用の画像ギャラリーを作成しようとしています。
実際に十分に高速である唯一の方法は、ハードウェアアクセラレーションされたtranslateXを使用することです。
私の問題は、divがアニメーションの最後に最初の位置を取り戻すことです。左ボタンにslideGalLeftクラスのクリックを追加します。アニメーションのdivに
ここのコールバックイベントセクションで例を見ることができます: http://position-absolute.com/jqtouch/demos/main/#home
.slideGalLeft {
-webkit-animation-name: slideColis;
}
@-webkit-keyframes slideColis {
from { -webkit-transform: translateX(0%); }
to { -webkit-transform: translateX(-100%); }
}
一度再生するとデフォルト値に戻るため、これにWebkitアニメーションを使用しないでください。代わりに定義する
_.slideGalleft{
-webkit-transition: -webkit-transform 1s linear;
-webkit-transform: translateX(0%);
}
_
javascriptを使用して、-webkit-transform: translateX(100%);
を設定するか、CSSクラスを要素に追加して、最終的な変換値を設定すると、Webkitがそれを適切にアニメーション化します。
ギヨームの答えは素晴らしいです。ただし、ハードウェアアクセラレーションを探している場合は、3Dレンダリング(ハードウェアアクセラレーションをアクティブにするもの)が必要であることをWebkitエンジンに通知する必要があります。
http://www.html5rocks.com/tutorials/speed/html5/#toc-hardware-accell によると、これは次のようにルールにtranslateZ(0)を追加することで実行されます。
.slideGalleft{
-webkit-transition: -webkit-transform 1s linear;
-webkit-transform: translateX(0%) translateZ(0);
}
それを超えてギヨームのアドバイスに従ってください。
使用する:
-webkit-animation-fill-mode: none/backwards/forwards/both;
これにより、アニメーションの終了時に要素がアニメーションのどの端に残るかを定義できます。
アニメーションの仕上げに「display:none」スタイルを追加することで、それを機能させることができました。次のCSSを使用します。
.paused {
-webkit-animation-play-state: paused;
}
.hiddendiv {
display:none;
}
次に、jQueryコードで:
$('div.sideimage').click(
function () {
$(this).removeClass("paused").delay(2000).queue(
function(next) {
$(this).addClass("hiddendiv");
next();
}
);
}
);
動作するはずです!