2012-12-10 10 views
7

Jquery MobileとPhonegapを使用してアプリケーションを開発しています。私が持っている問題は、ページの遷移を行うと、入ってくるページが最初に間違って表示され(DOM要素が正しい位置にも正しいサイズにもない)、移行が完了すると要素がサイズ変更されて正しい位置に移動する。 (また、移動する前にページ遷移が間違って表示されます)。私はフェードとスライドの両方の遷移を使ってこれをテストしました(私はスライド遷移を最終的に持っていたいと思います)。ここでJquery Mobileページの遷移中にページサイズを変更する

は、問題を示すjsFiddleです:
http://jsfiddle.net/fz7qs/2/

私はページ全体が一度に移行されないように、また、ページのコンテナとしてのdivを使用して、ちょうどページのコンテナのdivいます。

私はかなりのすべて(高さ、幅、余白など)にCSSのパーセンテージを使用しているため、アプリはさまざまなデバイスサイズに合わせて縮尺されます。また、私はいくつかの要素を中心にjavascriptを使用しています(pageshowイベントで発生)。私はこれらのパーセンテージが問題の一部だと思う。私はデスクトップブラウザ(phonegapを取り出して)で簡単なテストを構築し、ページコンテナに固定された高さを設定しました。これは問題を解決するように見えましたが、私が電話で試してみたところ、問題はまだ残っていました。

アプリの各ページは、$ .mobile.loadPage()を使用してDOMにプリロードされています。私がそれらをプリロードすると、高さのパーセンテージは親(ページコンテナdiv)に相対的であり、トランジションは正しく見えるはずです。

さらにJquery Mobileを調べると、遷移中にページの高さが空の文字列に設定されていることがわかりました。私はちょうどパーセンテージの高さで動作するかどうかをテストするために、この行をコメントアウトしようとしました。再び、デスクトップテストでは機能しましたが、電話では機能しませんでした。

私は、Samsung Galaxy NexusでAndroid phonegap(APIレベル8 - Android 2.2)を使用してテストしています。

パーセンテージベースの値を維持しながらページ遷移前にCSSとJavaScriptの位置付けを適用する方法はありますか?

index.htmlを

<body> 
    <!-- header on every page --> 
    <div id="mainHeader">This is a header</div> 

    <!-- page content --> 
    <div id="pageContainer"> 
     <div data-role="page"></div> 
    </div> 
</body> 

page1.html

<body> 
    <div data-role="page" id="page1"> 
     <div class="subheader"> 
      <div class="backButton"></div> 
      <div class="subheaderText">Settings</div> 
      <div class="helpButton"></div> 
     </div> 
    </div> 
</body> 

あなたのhtmlを作ることができるすべての

#pageContainer { 
    overflow: hidden; 
    width: 100%; 
    height: 86.772486772486772486772486772487%; 
} 

.ui-mobile [data-role="page"] { 
    min-height: 0px !important; 
    color: white; 
    position: relative; 
    width: 100%; 
    height: 100%; 
    background: #868a73; 
} 

.subheader { 
    width: 100%; 
    height: 10.16260162601626016260162601626%; 
    background-color: #000; 
    display: inline-block; 
    text-align: center; 
    position: relative; 
} 

.backButton { 
    background: url("images/back_button.png"); 
    background-size: contain; 
    background-repeat: no-repeat; 
    display: inline-block; 
    float: left; 
    width: 8.888888888888888888888888888889%; 
    height: 52%; 
    margin-left: 5.555555555555555555555555555556%; 
} 

.subheaderText { 
    color: #FFF; 
    font-size: 2.45em; 
    font-weight: bold; 
    display: inline-block; 
} 

.helpButton { 
    float: right; 
    background: url("images/help_button.png"); 
    background-size: contain; 
    background-repeat: no-repeat; 
    display: inline-block; 
    width: 8.888888888888888888888888888889%; 
    height: 64%; 
    right: 5.555555555555555555555555555556%; 
} 

答えて

1

まず、関連するCSSはトイレにしますjqueryのモバイルチュートリアルページが好きです。

<div data-role="page"> 

    <div data-role="header"> 
     <h1>Page Title</h1> 
    </div><!-- /header --> 

    <div data-role="content"> 
     <p>Page content goes here.</p> 
    </div><!-- /content --> 

    <div data-role="footer"> 
     <h4>Page Footer</h4> 
    </div><!-- /footer --> 

jquery mobile page anatomyに見てみましょう: 次のようなHTML構造を持っている必要があります。

関連する問題