Translate

mercoledì 25 maggio 2016

Problema footer che non viene visualizzato in fondo alla pagina

Può succedere che il footer di jquery mobile, nel caso in cui una pagina ha poco contenuto, non viene visualizzato in fondo alla pagina ma rimane in mezzo, lasciando uno spazio vuoto nella parte inferiore dello schermo.

Per ovviare a questo fastidioso problema, è sufficiente inserire nel footer questo comando:
<div data-role="footer" data-position="fixed">contenuto del footer qui</div> 

In questo modo avremo il footer sempre posizionato nella parte inferiore della pagina.

Questo comando può essere analogamente usato anche per l'header.

mercoledì 2 luglio 2014

Media query per iPad e iPhone

Parliamo delle media query per i dispositivi mobili Apple.
Si tratta di codice css che va inserito all'interno del nostro foglio di stile.
Partiamo dalla prima media query, che è per gli ipad e in generale per schermi desktop con risoluzione medio-bassa

 @media only screen   
 and (min-device-width : 768px)   
 and (max-device-width : 1024px)   
 {  
  // i tuoi stili vanno qui!
 }  

Proseguiamo con le media query per iPhone4

 @media  
 only screen and (-webkit-min-device-pixel-ratio : 1.5),  
 only screen and (min-device-pixel-ratio : 1.5) {  
   // i tuoi stili vanno qui!  
 }  

E infine quelle per iPhone5

 @media   
 only screen and (device-aspect-ratio: 40/71) {  
   // i tuoi stili vanno qui!!  
 }  

NB l'espressione "only screen" serve a fare in modo che la media query venga applicata non solo sui dispositivi specifici ma anche qualora un browser venga ridimensionato alla risoluzione specificata.

In pratica, se su un computer desktop apro una finestra di Chrome o Firefox e la ridimensiono fino ad avere una risoluzione simile a quella di un iphone, verrà applicato lo stile css dell'iphone (espediente utile per testare la visualizzazione anche da PC).

Per ulteriori dispositivi e impostazioni : http://stephen.io/mediaqueries/

martedì 1 luglio 2014

Precludere viewport zoom su safari mobile

Può succedere che l'utente faccia doppio tap su un pulsante o link del sito, con il risultato che su safari mobile (iphone, ipad) avvenga uno zoom della pagina con un indesiderato e antiestetico effetto.

Per evitare questo comportamento su safari mobile inserire nell'head:

<meta name="viewport" content="width=device-width, user-scalable=no">

sabato 15 febbraio 2014

jQuery Mobile 1.4 - Creare un pannello laterale a scomparsa

Nella nuova versione 1.4 è possibile utilizzare l'interessante funzionalità del pannello laterale a scomparsa, utile soprattutto per i cellulari che hanno una risoluzione inferiore.

Ecco il codice standard già citato nel mio post precedente:

<!DOCTYPE html>   
<html>   
<head>   
    <title>Pagina in jQuery Mobile 1.4.0</title>  
    <meta charset="ISO-8859-1"><!--per html5-->  
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"><!-- pre-html5 -->  
    <meta name="viewport" content="width=device-width, initial-scale=1">   
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />  
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>  
    <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>  
</head>  
<body>  
<div data-role="page">  
<div data-role="header">  
<h1>Page Title</h1>  
</div><!-- /header -->  
<div role="main" class="ui-content">  
<p>Page content goes here.</p>  
</div><!-- /content -->  
<div data-role="footer">  
<h4>Page Footer</h4>  
</div><!-- /footer -->  
</div><!-- /page -->  
</body>  
</html>  

Partendo da questo codice, andiamo ora ad aggiungere nell'header il pulsante "bars" contenente il link al pannello laterale a scomparsa, con la seguente riga di codice:

 <a class="ui-shadow-icon ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-bars ui-btn-icon-notext" href="#left-panel" ></a>  

Abbiamo così creato nella barra superiore (header) l'icona che cliccata aprirà il pannello a scomparsa.

Notare la differenza di sintassi rispetto alle precedenti versioni di jquery. Qui, infatti, nella classe di <a> si inserisce direttamente tutto ciò che riguarda l'icona (ombra, angoli arrotondati, pulsante inline, tipo di icona, etc).

Notare anche nell'href  il richiamo all'elemento con id "left-panel" che andremo poi a inserire prima dell'header, ovvero subito dopo l'apertura del <div data role="page">.

Ecco il codice del pannello laterale sinistro:



           <div data-role="panel" id="left-panel" data-theme="a">  
                <ul data-role="listview" data-theme="a">  
                <li data-icon="delete"><a href="#" data-rel="close">Chiudi</a></li>  
                <li data-role="list-divider" data-theme="a"></li>  
                <li data-theme="b"><a href="#">Home</a></li>  
                <li data-theme="a"><a href="#">Pagina 1</a></li>  
                <li data-theme="a"><a href="#">Pagina 2</a></li>  
                <li data-theme="a"><a href="#">Pagina 3</a></li>  
                </ul>  
           </div><!--/panel-->  

Bene, ora assembliamo il tutto:

 <!DOCTYPE html>    
 <html>    
 <head>    
     <title>Pagina in jQuery Mobile 1.4.0</title>   
     <meta charset="ISO-8859-1"><!--per html5-->   
     <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"><!-- pre-html5 -->   
     <meta name="viewport" content="width=device-width, initial-scale=1">    
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />   
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>   
     <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>   
 </head>   
 <body>   
 <div data-role="page">  
    <div data-role="panel" id="left-panel" data-theme="a">   
         <ul data-role="listview" data-theme="a">   
         <li data-icon="delete"><a href="#" data-rel="close">Chiudi</a></li>   
         <li data-role="list-divider" data-theme="a"></li>   
         <li data-theme="b"><a href="#">Home</a></li>   
         <li data-theme="a"><a href="#">Pagina 1</a></li>   
         <li data-theme="a"><a href="#">Pagina 2</a></li>   
         <li data-theme="a"><a href="#">Pagina 3</a></li>   
         </ul>   
    </div><!--/panel-->    
 <div data-role="header">  
     <a class="ui-shadow-icon ui-btn ui-shadow ui-corner-all ui-btn-inline ui-icon-bars ui-btn-icon-notext" href="#left-panel" ></a>   
     <h1>Page Title</h1>   
 </div><!-- /header -->   
 <div role="main" class="ui-content">   
     <p>Contenuto della pagina</p>   
 </div><!-- /content -->   
 <div data-role="footer">   
     <h4>Page Footer</h4>   
 </div><!-- /footer -->   
 </div><!-- /page -->   
 </body>   
 </html>  

E il gioco è fatto! Abbiamo un pannello laterale a scomparsa, molto più funzionale dei bottoni che fluttuano qua e là per lo schermo, a seconda della risoluzione del dispositivo usato.

lunedì 10 febbraio 2014

jQuery Mobile 1.4 codice standard per le pagine

Di seguito il codice standard per una pagina in jQuery Mobile 1.4 (la nuovissima versione di questo interessante framework).

Le novità sono molte e nei prossimi post vi parlerò nel dettaglio della nuova sintassi e di come realizzare le proprie pagine in modo che siano compatibili con questa nuova update.

La nuova versione ha risolto problemi di compatibilità con versioni più vecchie dei browser "desktop" (explorer in particolare, che rimane un osso duro quando si vuole visualizzare correttamente le pagine) e ha aggiunto nuove utili funzionalità oltre che bugfix vari che migliorano la performance delle pagine.

E' stato fatto, tra l'altro, un lavoro di "alleggerimento" per cercare di ottenere tempi di caricamento più rapidi.

Da notare il charset ISO-8859-1 che è consigliabile per caratteri vari accentati in Italiano, preferibile all'UTF-8.

<!DOCTYPE html>   
<html>   
<head>   
<title>Pagina in jQuery Mobile 1.4.0</title>  
<meta charset="ISO-8859-1"><!--per html5-->  
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"><!-- pre-html5 -->  
<meta name="viewport" content="width=device-width, initial-scale=1">   
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />  
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>  
<script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>  
</head>  
<body>  
<div data-role="page">  
<div data-role="header">  
<h1>Page Title</h1>  
</div><!-- /header -->  
<div role="main" class="ui-content">  
<p>Page content goes here.</p>  
</div><!-- /content -->  
<div data-role="footer">  
<h4>Page Footer</h4>  
</div><!-- /footer -->  
</div><!-- /page -->  
</body>  
</html>  

NB i link a fogli di stile CSS e javascript necessari puntano direttamente a jquery.com, per cui non è necessario ospitare sul proprio server nessuno di questi file.

Si tratta di una pagina di base senza CSS personalizzati nè temi aggiuntivi, ed è utile per chiunque voglia avere immediatamente pagine perfettamente funzionanti senza dover ospitare nel proprio sito i vari .css e .js, senza rischiare di perdersi nei path dei vari file e cartelle, con tutti i problemi che ne derivano.

mercoledì 29 gennaio 2014

Temi personalizzati per jQuery Mobile

Un consiglio prezioso per tutti i principianti di jQuery Mobile:
se avete creato un tema personalizzato con il there roller, conservate il file css originale, non minimizzato!

Mi spiego meglio: una volta creato il proprio tema personalizzato con il there roller, verranno generati due file css:
  • mio_tema.css
  • mio_tema.min.css
Il primo è quello "leggibile" e non compresso, dotato di commenti e tutto ciò che può servire per modificare a piacimento lo stile che avete creato.

Il secondo è quello da usare "in produzione": si tratta cioè di un file da cui sono stati rimossi tutti i commenti, gli spazi e gli invii, e che risulta più leggero per poterlo includere nelle proprie pagine, con tempi di caricamento ridotti.

Siccome jQuery Mobile è soggetto a numerosi aggiornamenti di versione, quando vorrete passare da una versione vecchia ad una più nuova, occorrerà andare su there roller e fare l'upload del vostro css non compresso (mio_tema.css).

NB: una volta aggiornato il tema personalizzato ad una nuova versione, anche le icone e immagini potranno cambiare, per cui andranno sostituite a quelle della vecchia versione.

Un consiglio che dò a chi ha intenzione di lavorare seriamente su questo tipo di piattaforma è di conservare tutte le pagine realizzate con le diverse versioni in sottocartelle distinte, per evitare di complicarsi la vita.

Es. partendo dalla root del vostro sito www.miosito.it potrete conservare in locale le varie cartelle miosito_jqm_1.2 - miosito_jqm_1.3 etc

Potreste chiedervi quale sia l'utilità di fare ogni volta l'upgrade da una versione alla successiva; ebbene, può risultare molto utile poichè la piattaforma in questione è in continuo aggiornamento e miglioramento e ogni nuova versione ha delle caratteristiche nuove e interessanti, oltre a sistemare dei problemi e bug di quella precedente.

Nel prossimo post spiegherò il passaggio da jqm1.3 a jqm1.4, per fare in modo che non sia doloroso e frustrante per voi, come lo è stato per me ;))