2011-11-11 3 views
10

私はぎこちない視覚的な不具合があります。私は、アプリケーション上のページを変更するときに素敵な移行が欲しいです。 残念ながら、私が別のページに最初に変更したときに、現在のページを外に出して新しいページを挿入する代わりに、現在のページはすぐに新しいページに置き換えられ、次にスライドアウトされます。最初のページが表示されていないときは、新しいページが表示されます。しかし、2回目は、魅力のように機能します!PhoneGap/jqueryモバイルスライドの移行が最初の呼び出しで正しく機能しない

これは私が問題を明確にするのに役立つビデオを作ったjQueryのモバイル+ PhoneGapの

をiphone上で実行されている:http://www.youtube.com/watch?v=Ybvzh_wTnSE

<body style="background-color: #000;"> 
     <div id="container" style="display:none;"> 
      <div id="side-menu" style="display:none;"> 
       <div id="header_top"></div> 
       <a href="#dives" onclick="showdives();"><div id="header_dives" class="selected"></div></a> 
       <div id="header_spacer1"></div> 
       <a href="#explore" onclick="showexplore();"><div id="header_explore"></div></a> 
       <div id="header_spacer2"></div> 
       <a href="#search" onclick="showsearch();"><div id="header_search"></div></a> 
       <div id="header_spacer3"></div> 
       <a href="#settings" onclick="showsettings();"><div id="header_settings"></div></a> 
       <div id="header_bottom"></div> 
      </div> 
      <div id="slide_mask"> 
       <!-- START of LOGIN page --> 
       <div data-role="page" id="login">   
        <div id="home_frame"> 
         <div id="home_logo"></div> 
         <div id="home_fblogin" onclick="login()"></div> 
         <div class="home_login"> 
          <p>Email: <input type="text" name="user[email]" size="30"/></p> 
          <p>Password: <input type="password" name="user[password]" size="30"/></p> 
          <button onclick="show_page_home();">LOGIN</button> 
         </div> 
        </div> 
       </div> 
       <!-- END of LOGIN page --> 

       <!-- START of LOGIN page --> 
       <div data-role="page" id="dives" class="right_pane">  
         <p>My dives !</p>  
       </div><!-- /content --> 
       <div data-role="page" id="explore" class="hidden right_pane"> 
         <p>My explore !</p>  
       </div><!-- /content --> 
       <div data-role="page" id="search" class="hidden right_pane">  
         <p>My search !</p>  
       </div><!-- /content --> 
       <div data-role="page" id="settings" class="hidden right_pane"> 
         <p>My settings !</p> 
         <button onclick="logout_db();">logout</button>  
       </div><!-- /content --> 
       <!-- END of LOGIN page --> 
      </div> 
     </div> 
     <div id="log"></div> 
     <div id="data"></div> 
    </body> 

し、関連するCSS:

body {margin: 0; font: 18px Helvetica; text-align: center; background-color: #000; background: url(../img/bg_big.png) repeat; 
     -webkit-user-select: none; /* prevent copy paste for all elements */ 
     } 
    #container { width:320px; height:460px; overflow: hidden;} 

    input{ -webkit-user-select: text; /* enable copy paste for elements with this class */} 
    a {-webkit-user-select: none; /* prevent copy paste for all elements */} 
    span {-webkit-user-select: none; /* prevent copy paste for all elements */} 

    #side-menu {z-index: 1000 !important; position: fixed; height: 460px; width: 56.5px; background: url(../img/bg_big.png) no-repeat; display: inline-block; 
    overflow: hidden; top: 0px; left: 0px; } 
    #header_top {background: url(../img/header/header_top.png) no-repeat; background-size: 56.5px 48.96px; width: 56.5px; height: 48.96px; display: block;} 
    #header_dives {background: url(../img/header/dives.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_dives.selected{background: url(../img/header/dives_selected.png) no-repeat;} 
    #header_spacer1{background: url(../img/header/header_space1.png) no-repeat; background-size: 56.5px 13.9px; width: 56.5px; height: 13.9px; display: block;} 
    #header_explore{background: url(../img/header/explore.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_explore.selected{background: url(../img/header/explore_selected.png) no-repeat;} 
    #header_spacer2{background: url(../img/header/header_space2.png) no-repeat; background-size: 56.5px 15.33px; width: 56.5px; height: 15.33px; display: block;} 
    #header_search{background: url(../img/header/search.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_search.selected{background: url(../img/header/search_selected.png) no-repeat;} 
    #header_spacer3{background: url(../img/header/header_space3.png) no-repeat; background-size: 56.5px 17.73px; width: 56.5px; height: 17.73px; display: block;} 
    #header_settings{background: url(../img/header/settings.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_settings.selected{background: url(../img/header/settings_selected.png) no-repeat;} 
    #header_bottom{background: url(../img/header/header_bottom.png) no-repeat; background-size: 56.5px 160px; width: 56.5px; height: 160px; display: block;} 

    .hidden {display: none;} 
    .right_pane{width: 263.5px !important; background: url(../img/right_bg.png) no-repeat; background-size:263.5px 460px; width: 263.5px; height: 460px; left: 56.5px !important;} 
    #slide_mask{ display: inline-block; overflow: hidden; padding-left: 56.5px; width: 263.5px; height: 460px; top: 0;} 

とJSのビット:

/////////////////////////////////// 
    //MENU MECHANICS 
    /////////////////////////////////// 

    function showdives(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_dives").addClass("selected"); 
    } 

    function showexplore(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_explore").addClass("selected"); 
    } 
    function showsearch(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_search").addClass("selected"); 
    } 
    function showsettings(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_settings").addClass("selected"); 
    } 

onclickメソッドは、メニュー項目に/から選択されたクラスを追加/削除するだけです。

+0

問題の良いビデオと説明。あなたの問題はおそらくあなたのJavascriptにあるので、そのコードも含めるべきです。 – Spike

+0

が行わ:)あなたはそれが簡単です見ることができるように... –

+0

も「ポップ」と魅力 –

答えて

3

私は人々がこれを「ちらつき」と呼んでいると思うので、それを検索するとより良い結果が得られます。

+1

Hi Spike - 試しましたが、それではありません:(実際には、私はそれがちらつきではないと思っていません:/ –

+0

うーん...すみません。アンドロイドエミュレータでも同じことをするのですか? – Spike

+0

私はIOS上でissieしか持っていません - アンドロイドはうまくいきます(どちらの場合もemuとデバイスは同じように振る舞います) –

3

私と私の友人はJクエリ1.2。

この問題を解決する方法は、data-transition = "none"とすることでした。多分これはモバイル

スタイルを表示されるくらい、しかし、作品やちらつきの問題を削除することはできません。

このヘルプが必要です。

0

PhoneGapの中にjQueryのモバイルアプリを包むとき、私は、同じ問題を抱えていたが、さらに悪いです。ページ遷移がちらつくだけでなく、UIが完全に壊れていました。私はこのアプリでJquery 1.8とJquery mobile 1.2を使いました。

私はここで提案したソリューションのほとんどを試しましたが、何も機能しませんでした。その後、私はPiotr Walczyszynのthisソリューションを見つけました。すべてが夢のように機能しました! JqueryモバイルとPhonegapを一緒に使用している人におすすめです。

関連する問題