/ / Phonegap / Jquery Mobile Slide-Übergang funktioniert beim ersten Aufruf nicht ordnungsgemäß - Jquery, Jquery-Mobile, Cordova

Phonegap / jquery mobile Folie Übergang funktioniert nicht ordnungsgemäß beim ersten Aufruf - jquery, jquery-mobile, Cordova

Ich habe eine peinliche Sehstörung. Ich möchte einen schönen Übergang beim Wechseln von Seiten in einer App. Wenn ich zum ersten Mal auf eine andere Seite wechsle, wird die aktuelle Seite sofort durch die neue Seite ersetzt, und nicht die aktuelle Seite und die neue Seite hineingeschoben. Wenn die erste Seite nicht sichtbar ist, wird die neue Seite angezeigt. Beim zweiten Mal funktioniert es jedoch wie ein Zauber!

Dies läuft auf iPhone mit jQuery Mobile + PhoneGap

Ich habe ein Video gemacht, um das Problem zu klären: 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>

Und das relevante 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;}

und das bisschen von 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");
}

Die Onclick-Methoden fügen nur die "ausgewählte" Klasse zu / aus den Menüelementen hinzu.

Antworten:

3 für die Antwort № 1

Ich glaube, die Leute bezeichnen dies als "Flimmern",So haben Sie bessere Ergebnisse, wenn Sie danach suchen. Nachdem Sie sich umgesehen haben, sieht es so aus, als ob Ihr Problem auf Android üblich ist und durch das folgende CSS behoben werden kann:

.ui-page {
-webkit-backface-visibility: hidden;
}

Hier einige Referenzen:


3 für die Antwort № 2

Ich und meine Freunde verwenden JQuery 1.2.

Die Lösung dieses Problems bestand darin, data-transition = "none" zu setzen. Vielleicht kann dies nicht mobil erscheinen

Stil so viel, aber funktioniert und löscht das flackernde Problem.

Ich hoffe das hilft.


0 für die Antwort № 3

Ich hatte das gleiche Problem, aber noch schlimmer alsJQuery Mobile App in Phonegap einpacken. Nicht nur die Seitenübergänge flackerten, sondern auch die Benutzeroberfläche war komplett kaputt. Ich habe in dieser App Jquery 1.8 und Jquery Mobile 1.2 verwendet.

Ich habe die meisten der hier vorgeschlagenen Lösungen ausprobiert, aber nichts hat funktioniert. Dann habe ich gefunden Dies Lösung von Piotr Walczyszyn, und alles funktionierte wie ein Traum! Sehr empfehlenswert für alle, die Jquery mobile und Phonegap zusammen verwenden.