« | »

06月02日 

jQTouch

jQTouchちらつき対応(6/4追記)

ここ数日jQTouchでiPad用ローカルアプリを作ってるんですが、jQTouchオフィシャルではiPad用に2カラムを制御するための仕様策定が進んでいるようですね。

お手軽にiPhone・iPadの動きを伴ったjQTouchですが、画面遷移時に遷移後の画面が一瞬チラついたりして少し微妙な点があります。ソースを追って見たところ、アニメーションにはCSS3のアニメーション機能を使っているようです。
アニメーションを開始させるタイミングで、適したCSSをJSで指定してあげることで要素をアニメーションさせ、終わった段階でアニメーション用CSSを外してあげる。

ちらつきが発生する原因としては、アニメーション終了でCSSを外す時に同時にdisplay:noneになるのですが、ブラウザの仕様(?)で一瞬ちらつくみたいです。

ということで色々と対策を考えてdisplay:noneだけタイミングをずらしてみたりとか試してみたのですが上手く行かず。。。で、ググって見たら出てきました…orz

jqtouch.js

JAVASCRIPT:
  1. function animatePages(from, ...
  2.  
  3. scrollTo(0, 0);
  4.  
  5. // 追加ここから
  6. var toStart = 'translateX(' + (backwards ? '-' : '') + window.innerWidth + 'px)';
  7. // 6/4追記ここから
  8. if (animation.name == 'slideup' && backwards != true) {
  9.     toStart = 'translateY(0px)';
  10. }
  11. // 追記ここまで
  12. fromPage.css( 'webkitTransform', toStart );
  13. // 追加ここまで
  14.  
  15. var callback = function(event) {
  16.     // 追加1行
  17.     fromPage.css( 'webkitTransform', '');
  18.  
  19.     if (animation)

(元ネタのページは失念です。。。)

元のソースに手を入れるのは気が引けるところですが、これでバッチリちらつきを無くすことが出来ます。お悩みの方は是非お試し下さいませ。

(6/4追記)
slideupのアニメーションで、遷移前のページが消えてしまう為、ソース改変の一部を変更しました。
ちなみにドキュメントには書かれてない(?)と思うんですが、縦スライドさせたいときは「slideup」ですが、任意で横スライドさせたい場合は「slide」です。

トラックバック URL

コメント & トラックバック

[iPhone OS][jQTouch]iPhoneOSにも対応が迫られているざんす。

不毛だなーとはおもうけれども専用サイトをつくることになって頑張っている。 ライブラリとして選択したのはjQTouchというライブラリ。 xm2jsonも使って既存サイトのxmlデータを取り込ん…

コメントフィード

コメント