Primi passi con jQuery Mobile: realizziamo la prima pagina

Per tutti coloro che hanno solamente sentito parlare di jQuery Mobile ed hanno bisogno di un piccolo tutorial sui primi passi in jQuery Mobile, vi proponiamo alcuni esempi su come procedere.

CODICE HTML INIZIALE:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>La mia prima pagina jQuery Mobile</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
    </head>
    <body>
    </body>
</html>

Iniziamo con l’includere alcune librerie ed il file CSS di jQuery Mobile, contenente i temi proposti di default da jQuery. Non dimenticate inoltre di includere la libreria di jQuery: nel nostro caso includeremo la libreria aggiornata alla versione 1.7.1.

Quello che vogliamo ottenere è la barra nel frontone, in alto, contenente un titolo d’esempio, ed un testo generico nel corpo.

Iniziamo, prima di tutto, inserendo nel BODY un oggetto che fungerà da pagina:

<div data-role="page" id="page1">
 ...
</div>

Come vedere, l’oggetto pagina è un semplice DIV. jQuery riconoscerà quel DIV come pagina grazie al tag data-role=page. Chiaramente andremo a dare un ID=page1 per poterla identificare facilmente.

All’interno di questa PAGE andiamo ad inserire due oggetti: un header ( con il titolo ) e un content.

<div data-role="page" id="page1">

    <div data-role="header">
       ...
    </div>
    <div data-role="content">
       ...
    </div>

</div>

Cosa abbiamo fatto?
Abbiamo semplicemente creato due oggetti diversi, un header ed un content, identificandoti grazie ai tag data-role=header e data-role=content. A questo elenco aggiungeremo, volendo, un data-role=footer, ma in questo caso non verrà affrontata.

Per poter evidenziare un titolo nell’header, andiamo ad inserire un H2:

<div data-role="page" id="page1">

    <div data-theme="b" data-role="header">
                <h3>
                    Titolo nel frontone
                </h3>
    </div>
    <div data-role="content">
       ...
    </div>

</div>

Se avete fatto attenzione, ho inserito un tag html H3 e un riferimento al tema.
Il tema di default avrebbe visualizzato l’header con uno sfondo nero, mentre forzando il tema a visualizzare il tema=b, sarà di sfondo blu.

Ora non resta che inserire un testo di esempio dentro l’elemento content.

<div data-role="page" id="page1">

    <div data-theme="b" data-role="header">
                <h3>
                    Titolo nel frontone
                </h3>
    </div>
    <div data-role="content">
                <div>
                    <h2>
                        <strong>
                            Lorem ipsum: titolo
                        </strong>
                    </h2>
                </div>
                <div>
                    <p>
                        <b>
                            <span>
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam facilisis,
                                dolor ultricies blandit molestie, nibh arcu eleifend purus, nec malesuada
                                erat mi ut sem.
                            </span>
                        </b>
                    </p>
                </div>
                <div>
                    <p>
                        <b>
                            <span>
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam facilisis,
                                dolor ultricies blandit molestie, nibh arcu eleifend purus, nec malesuada
                                erat mi ut sem.
                            </span>
                        </b>
                    </p>
                </div>
    </div>

</div>

Abbiamo inserito un semplicissimo codice html all’interno del div data-role=content.
Se tutto è andato come dovrebbe e abbiamo provato il codice soprastante con un browser come Chrome o Firefox, il risultato dovrebbe essere il seguente:

Vi siete persi qualche passaggio? Ecco il codice completo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>
        </title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
        </script>
        <script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js">
        </script>
    </head>
    <body>
        <div data-role="page" id="page1">
            <div data-theme="b" data-role="header">
                <h3>
                    Titolo nel frontone</h3>
            </div>
            <div data-role="content">
                <div>
                    <h2>
                        <strong>
                            Lorem ipsum: titolo</strong></h2>
                </div>
                <div>
                    <p>
                        <b>
                            <span>
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam facilisis,
                                dolor ultricies blandit molestie, nibh arcu eleifend purus, nec malesuada
                                erat mi ut sem.
                            </span>
                        </b>
                    </p>
                </div>
                <div>
                    <p>
                        <b>
                            <span>
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam facilisis,
                                dolor ultricies blandit molestie, nibh arcu eleifend purus, nec malesuada
                                erat mi ut sem.
                            </span>
                        </b>
                    </p>
                </div>
            </div>
        </div>
    </body>
</html>

Piccolo off topic:

Tutta la nostra solidarietà va agli amici emiliani, così duramente colpiti dalle scosse di questi giorni. Non appena riceveremo le informazioni corrette, pubblicheremo le modalità di acquisto di prodotti agroalimentari dalle ditte così duramente colpite dal disastro. Perchè acquistare il parmigiano al supermercato, quando lo si può acquistare direttamente dai produttori, così bisognosi di aiuto?

jQuery Mobile: prototipazione rapida con Codiqa

Che siate alle prime armi con jQuery Mobile o che sappiate già tutto quello che serve, Codiqa mette a disposizione uno strumento decisamente interessante per realizzare con un’interfaccia drag&drop le vostre applicazioni web.

L’idea di fondo è dare uno strumento semplice, veloce e intuitivo per creare una bozza di interfaccia da poter, alla fine della fase di design, scaricare e, magari, inviare a colui che dovrà mettere mano al codice.

Seguendo un po’ la falsariga del Sencha Architect 2, è uno strumento che permette di realizzare il vostro sito mobile senza conoscerne il codice, anche se l’ottimizzazione manuale è poi obbligatoria se si vuole raffinare il tutto.

Per quelli più attenti tra voi non sarà necessario aggiungere che il plugin di Codiqa è presente anche sul sito ufficiale di jQuery Mobile

Essendo Codiqa un servizio cloud, ha un costo mensile differente a seconda del profilo che preferite, ma se fate attenzione, in fondo alla tabella, c’è un link per attivare un’utenza gratuita con delle forti limitazioni ma utile per provare.

Come effettuare lo scroll di un testo in jQuery Mobile

Il problema con jQuery Mobile

A molti di voi sarà capitato di dover realizzare una qualche interfaccia in jQuery Mobile, eccezionale soluzione per dare un appeal mobile alle vostre interfacce.
Il mio problema nasceva dal fatto che per alcuni contenuti particolarmente lunghi, dove non bastava lo spazio renderizzato in pagina, non potevo contare su un effetto Scroll On Tap, tipico dell’interfaccia sugli SmartPhone.

Alcune soluzioni esterne

Una delle soluzioni più usate è quella di usare iScroll 4, che trovate qui, realizzato Matteo Spinelli: la sua soluzione è molto usata, funziona bene e bisogna apporre qualche modifica agli stili CSS dei vari DIV che contengono i vostri dati.

La mia soluzione con Scrollview.js

Io ho risolto il mio problema utilizzando il plugin di Adobe jquery.mobile.scrollview.js.
Non ho avuto alcun bisogno di modificare le mie pagine e l’effetto è abbastanza fluido. Ad esser completamente sinceri, iScroll4 permette una maggiore fluidità di scroll ma il livello di  smooth raggiunto da scrollview.js raggiungeva lo scopo adeguatamente.

La libreria stessa è offerta con la seguente dicitura:
” Note: Code is in draft form and is subject to change “

Siccome ho effettuato numerose prove di funzionamento, ho raggiunto la ( mia personalissima ) conclusione che l’ordine di caricamento in pagina dei vari file .js dovrebbe essere il seguente:

        <link rel="stylesheet" href="jquery.mobile-1.1.0.min.css" />
        <link rel="stylesheet" href="jquery.mobile.scrollview.css" />
        <link rel="stylesheet" href="my.css" />

        <script src="jquery.min.js"></script>
        <script src="jquery.mobile-1.1.0.min.js"> </script>
        <script src="jquery.easing.1.3.js">
        </script>
        <script src="jquery.mobile.scrollview.js">
        </script>
        <script src="scrollview.js">
        </script>

Per praticità, vi posto i links diretti su demo.oneblackcat.it, ma tenete conto che potrebbero esserci delle versioni più aggiornate sul web, quindi il mio consiglio è quello di cercare su Google, non vi sarà difficile trovare le fonti ufficiali.

<link rel=”stylesheet” href=”jquery.mobile-1.1.0.min.css” />
<link rel=”stylesheet” href=”jquery.mobile.scrollview.css” />
<link rel=”stylesheet” href=”my.css” />

<script src=”jquery.min.js“></script>
<script src=”jquery.mobile-1.1.0.min.js“> </script>
<script src=”jquery.easing.1.3.js“></script>
<script src=”jquery.mobile.scrollview.js“></script>
<script src=”scrollview.js“></script>

E’ molto semplice attivare lo scrollview sul content di una pagina:

        <div data-role="page" id="page5">
            <div data-theme="b" data-role="header">
                <h3>
                   Titolo della pagina
                </h3>
            </div>
            <div data-role="content" class="ui-scrolllistview">
                <div style="" data-role="listview">
                	<div class="mydetail">
                    	Lorem ipsum...
                        </div>
                </div>
            </div>

        </div>

Aggiungete solamente, al DIV con data-role=content la classe ui.scrolllistview, mentre al DIV interno assegnate il ruolo di data-role=listview.