Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Usare Bootstrap per il mobile

Un esempio che mostra come utilizzare Bootstrap per costruire interfacce mobile scritte in HTML5, che si integrino correttamente con il sistema operativo.
Un esempio che mostra come utilizzare Bootstrap per costruire interfacce mobile scritte in HTML5, che si integrino correttamente con il sistema operativo.
Link copiato negli appunti

In questa lezione, utilizzeremo Bootstrap, jQuery e le API Local Storage di HTML5 per realizzare una semplice app. Creeremo un convertitore di valuta costituito da due pagine: la prima, index.html, permetterà di svolgere le operazioni di cambio tra valute; la seconda, settings.html, attivabile attraverso una voce della barra di navigazione, consentirà di impostare i tassi di cambio per le valute prese in considerazione.

Il funzionamento

La nostra app prevede tre possibili cambi: Euro/Dollaro, Euro/Yen, Euro/Sterlina. Nella prima pagina HTML si deve scegliere, tramite menu a scomparsa, quale conversione operare. I campi di testo rappresenteranno rispettivamente lo stesso valore espresso nelle due valute. Ogni volta che verrà scritto un valore all'interno di uno di essi sarà automaticamente effettuata la conversione (gestendo l'evento keypress tramite jQuery).

Figura 1. Scelta della valuta tramite menu

Scelta della valuta tramite menu
Figura 2. Interfaccia di conversione delle valute

Interfaccia di conversione delle valute

Nella nostra app si potrà raggiungere la seconda pagina HTML cliccando sulla voce Impostazioni della barra di navigazione:

Figura 3. Menu responsive

Menu responsive

La seconda pagina conterrà un form verticale per specificare i tassi di conversione. Al termine delle modifiche, premendo il tasto Salva, i valori diventeranno persistenti (salvati in locale tramite le Local Storage API di HTML5):

Figura 4. Salvare i tassi di cambio

Salvare i tassi di cambio

La prima pagina HTML: conversione di valute

Il template di base delle pagine è quello già visto nella lezione precedente:

<body>
<header>
<nav class="navbar navbar-default">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">CambiaValute</a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li><a href="settings.html">Impostazioni</a></li>
      </ul>
    </div>
  </div>
</nav>
</header><!-- /header -->
    <div class="container">
    <h2 id="ultimo"></h2>
    </div>
    <div class="container">
<form>
<select class="form-control" id="cambio">
    <option value="scegli">Scegli una valuta</option>
    <option value="eurodollaro">Euro/Dollaro</option>
    <option value="euroyen">Euro/Yen</option>
    <option value="eurosterlina">Euro/Sterlina</option>
</select>
 <div class="form-group">
        <label id="labelCambio1" for="cambio1">-</label>
        <input type="number" class="form-control" id="cambio1" placeholder="Valore" step="0.0001">
    </div>
    <div class="form-group">
        <label id="labelCambio2" for="cambio2">-</label>
        <input type="number" class="form-control" id="cambio2" placeholder="Valore" step="0.0001">
    </div>
</form>
</div>
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script>
        $('#cambio').change(
        function(e)
            {
                $("#cambio2").val('');
                $("#cambio1").val('');
                switch(this.value)
                {
                    case "eurodollaro":
                        cambio=localStorage.getItem('eurodollaro');
                        $('#ultimo').html("Euro/Dollaro "+cambio);
                        $('#labelCambio1').html("Euro");
                        $('#labelCambio2').html("Dollaro");
                        break;
                    case "euroyen":
                        cambio=localStorage.getItem('euroyen');
                        $('#ultimo').html("Euro/Yen "+cambio);
                        $('#labelCambio1').html("Euro");
                        $('#labelCambio2').html("Yen");
                        break;
                    case "eurosterlina":
                        cambio=localStorage.getItem('eurosterlina');
                        $('#ultimo').html("Euro/Sterlina "+cambio);
                        $('#labelCambio1').html("Euro");
                        $('#labelCambio2').html("Sterlina");
                        break;
                    default:
                        cambio=1;
                        $('#ultimo').html("");
                        $('#labelCambio1').html("-");
                        $('#labelCambio2').html("-");
                }
                console.log(cambio);
            });
     $( "#cambio2" ).keyup(function(event) {
            $("#cambio1").val($(this).val()/cambio);
		if ($(this).val().length==0)
			$("#cambio1").val('');
});
     $( "#cambio1" ).keyup(function(event) {
            $("#cambio2").val($(this).val()*cambio);
		if ($(this).val().length==0)
			$("#cambio2").val('');
});
    </script>
  </body>

Innanzitutto abbiamo dato forma alla barra di navigazione che, in questo caso, un logo sulla sinistra ed il semplice menu sulla destra: il tutto, ovviamente, con un approccio responsive. Per questo, all'interno della sezione <nav> troveremo due blocchi <div>: il primo, di classe navbar-header, conterrà il link costituente il logo; il secondo, di tipo navbar-collapse, conterrà una lista <ul> che darà forma al vero e proprio menu. Il form viene realizzato usando le classi form-group e form-control. La classe form-group serve ad "impacchettare" due componenti del form in relazione tra loro come un campo di testo e la sua etichetta: ciò allo scopo di permettere al framework una migliore gestione degli spazi. I controlli input vengono invece etichettati come form-control. La loro larghezza sarà così pari a quella del display. I campi di testo sono corredati, oltre che dai normali elementi HTML5, dagli id che serviranno ad identificarli e manipolarli con jQuery. Il codice jQuery si trova in fondo al body in un ulteriore blocco script. Come si vede, ad ogni pressione di un tasto (evento keyup) su un controllo, viene attivata la conversione. Si sarebbe potuta eseguire qualche verifica in più sui valori, che abbiamo omesso per semplicità. Con jQuery viene gestito anche l'evento change dell'elemento <select>. Questo servirà a caricare i valori dal Local Storage associati al tipo di operazione scelta.

Le settings

La pagina delle impostazioni sarà la seguente:

<body>
<form class="form-padding">
    <div class="form-group">
        <label for="inputEuroDollaro">Euro/Dollaro</label>
        <input type="number" class="form-control" id="inputEuroDollaro" placeholder="Euro/Dollaro" step="0.0001">
    </div>
    <div class="form-group">
        <label for="inputEuroYen">Euro/Yen</label>
        <input type="number" class="form-control" id="inputEuroYen" placeholder="Euro/Yen" step="0.0001">
    </div>
    <div class="form-group">
        <label for="inputEuroSterlina">Euro/Dollaro</label>
        <input type="number" class="form-control" id="inputEuroSterlina" placeholder="Euro/Sterlina" step="0.0001">
    </div>
    <button type="button" class="btn btn-primary" id="salva">Salva</button>
</form>
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
		<script src="js/bootstrap.min.js"></script>
             <script>
                 function init()
                 {
                    if (localStorage.getItem('eurodollaro')===null)
                    {
                        console.log('passato');
                        localStorage.setItem('eurodollaro',1.1074);
                    }
                    if (localStorage.getItem('euroyen')===null)
                    {
                        localStorage.setItem('euroyen',133.3565);
                    }
                    if (localStorage.getItem('eurosterlina')===null)
                    {
                        localStorage.setItem('eurosterlina',0.7227);
                    }
                 }
                 function fillForm()
                 {
                    $('#inputEuroDollaro').val(localStorage.getItem('eurodollaro'));
                    $('#inputEuroYen').val(localStorage.getItem('euroyen'));
                    $('#inputEuroSterlina').val(localStorage.getItem('eurosterlina'));
                 }
                 function save()
                 {
                    localStorage.setItem('eurodollaro',$('#inputEuroDollaro').val());
                    localStorage.setItem('euroyen',$('#inputEuroYen').val());
                    localStorage.setItem('eurosterlina',$('#inputEuroSterlina').val());
                 }
                 init();
                 fillForm();
                 $('#salva').on("click",function(e){
                         save();
                 });
             </script>
	</body>

Gli aspetti più interessanti si trovano alla fine del body, dove in uno script viene gestito il salvataggio delle informazioni tramite le Location Storage API: funziona come una struttura a dizionario (salviamo un valore riconoscendolo tramite una chiave) che usa come metodi principali getItem (legge il valore in base alla chiave) e setItem (salvare il valore associato alla chiave).

Ti consigliamo anche