質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

2回答

3420閲覧

webview上で表示させるwebページのかくつきについて(animate)

manz

総合スコア18

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2015/12/16 08:00

編集2015/12/16 08:06

iphone/androidのwebview上で、画像のみのwebページを表示させるアプリを作成しています。
前提として、htmlやcss,jsファイルや画像ファイル(png)等はすべて端末に保持させており、通信などは行いません。
具体的には、htmlファイルは1つしかなく、body内に画像を表示させ、
画面遷移する際は新しいdivを右から左へスライドさせて入れ替えてネイティプアプリのような動きをさせています。
また、新しい画面を生成する際は、beforeを使って新しいdivを生成・追加しスライドが終わったら遷移前のdivをremoveしています。
リンク等のクリックイベントは0.3秒のウェイトをさせない為、jquery mobileのtapイベントを拾っています。

イメージ説明

複数画像のページもあるので、下記のソースのようにすべての画像のloadを検知してから画面遷移させるようにしています。

javascript

1 var all_img=$(".content:not(.oldPage) img"); 2 var img_len=all_img.length; 3 var loaded_counter=0; 4 //すべての画像にロードイベントを設定 5 for(var i=0; i<img_len; i++){ 6 all_img[i].addEventListener("load",loadFunc); 7 } 8 function loadFunc(){ 9 loaded_counter++; 10 if(img_len===loaded_counter){ 11 後続の処理へ 12 } 13 }

現在パターン①で実装を行っており、画像の数や画像の大きさによってかくつくページがあるのですが、
パターン②のようにtranslate3dを使用しても、期待したスムーズなスライドを実現できませんでした。
表示させる画像を最初に表示するとき一番かくついてしまうように思うのですが、
cssの問題ではなくキャッシュなどの問題ないのか切り分けもできていない状態です。
また、実機で確認したところiPhoneにくらべてandoroid端末だとより一層かくつく動きをしてしまっています。
スムーズなスライドを実現するにはどのような手順を踏めばよいでしょうか。
ご教授お願いいたします。

※objには、画面遷移時に差し替えを行うdiv要素が設定されています。
【パターン①】

javascript

1 obj.animate({"left":leftValue +"px"},{ 2 duration:200, 3 step:function(){ 4 }, 5 complete:function(){ 6 リンククリックイベントのバインド 7 遷移元画面のremove 8 } 9 });

【パターン②】

javascript

1 obj.css({ 2 '-webkit-transform':'translate3d('+ leftValue +',0,0)', 3 '-webkit-transition-duration':'150ms', 4 '-webkit-transition-timing-function':'linear' 5 }).bind("webkitTransitionEnd", function(ev){ 6 リンククリックイベントのバインド 7 遷移元画面のremove 8 } 9 });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

jQuery、cssともにカクつくようだとwebviewの限界なのではないかと、やっぱりネイティブのようにはいきませんよね。
画像が少ないとスムーズなのであれば、新Divの方は画像をhiddenにしておいてスライド後に表示されるとかどうでしょう?

投稿2015/12/16 11:04

rossi46hiro

総合スコア992

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manz

2015/12/16 13:11

hiddenにしてもダメでしたがそもそも大きい画像をhtmlから除去するとかくつかなくなりました。 アドバイスありがとうございます。
rossi46hiro

2015/12/16 13:41

すみません、Lazy Loadみたいなものを考えてました。 ライブラリそのままでは使えないですが、同じようなものをスライドで実装すれば、コンテンツがなにもない状態でスライドできるのでスムーズになるかと!
guest

0

JavaScript

1jQuery.fx.interval=100;

に設定してから実行するとどうなりますか?
この値はアニメーションなどの、描画毎の間の時間(ミリ秒)になります。

投稿2015/12/16 10:49

sekitaka_1214

総合スコア509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manz

2015/12/16 11:09

ご回答ありがとうございます。 1~100に間でいろいろ試してみましたが、あまり変わりませんでした。 (200にした場合は想定通りよりかくつきました。) 右から左へスライドするとき、一周スライドが止まってそのあとはスムーズに左へスライドする動きになっています。 画面を戻り、再度同じページに遷移しようとするとスムーズにスライドされるので、キャッシュ関連の問題でしょうか。。。
sekitaka_1214

2015/12/16 11:20

あ、新DIVの画像も予めロードしておくのでなく、新DIVに遷移するタイミングでロードしているということでしょうか。 そうであれば、初回の画像のロードのために、一瞬カクつくのは自然な動きな気がします。 ローカルですし、ページ表示時に新DIVも含めて全ての画像をロードしておくのはどうでしょうか。
manz

2015/12/16 13:16

とある理由で、何百枚もページがありまして遷移のたびに遷移先の画像を読み込む作りになっています。 横スクロールできる表のページなのですが、メインのページ画像と横に長い画像が配置してあり、横に長い画像を短く編集して表示させてみるとかくつくことがなくなりました。 原因の切り分けはできたので、少し前進したかと思います。 見えている範囲の画像のみ先に読み込んで、遷移が終わったら差し替える等いろいろ試してみます。 アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問