Mobile App Design / Dev Building Navigation con jQuery
Gli smartphone sono ora dotati di alcuni browser Web molto efficienti. JavaScript è più potente che mai e può essere esteso con l'aiuto di librerie di codici come jQuery. Quando aggiungi le ultime specifiche HTML5 / CSS3, è possibile creare applicazioni web mobili molto scattanti con un codice di frontend di base.
In questo tutorial mostrerò come è possibile creare un sito web / un'applicazione web mobile. Utilizzeremo le query multimediali CSS3 per il targeting di dispositivi specifici e risoluzioni dello schermo. Inoltre un po 'di jQuery aiuta ad animare il menu e caricare il contenuto della pagina esterna usando le chiamate Ajax. Ancora meglio, il layout può persino espandersi per essere visualizzato correttamente nei normali browser desktop come Chrome o Firefox.
- Dimostrazione dal vivo
- Codice sorgente
Definire la struttura della pagina
Iniziamo andando prima sulla pagina HTML e formattandola usando alcune regole CSS. Salterò la maggior parte dei meta tag insoliti nell'intestazione poiché non influiscono direttamente sull'app Web. Tuttavia ce ne sono alcuni che dovrei menzionare, vale a dire dal frammento di seguito:
X-UA-Compatible è usato per descrivere come il tuo documento dovrebbe essere visualizzato in determinati browser. È uno scenario interessante quando si codifica in HTML5, quindi non mi preoccuperei troppo di questo. Comunque il meta viewport il tag è molto importante. Imposta la finestra del browser mobile al 100% anziché all'effetto zoom standard.
È anche possibile disabilitare lo zoom dell'utente con il valore del contenuto user-scalable = no
. Ma in questo caso vogliamo solo impostare la larghezza dello schermo intero come la larghezza del nostro dispositivo. I tag delle app Web Apple consentiranno il salvataggio del sito Web come icona della schermata iniziale sul tuo iPhone o iPod Touch. Non del tutto necessario, ma sicuramente vale la pena avere.
Contenuto del corpo interno
All'interno del tag body ho impostato un div wrapper con l'ID #w
. Dentro ho rotto il layout in altre due div usando ID #pagebody
e #navmenu
. L'intera larghezza della pagina è limitata a 640 px per scelta, in modo che il layout si riduca a un numero rigoroso.
Collegamenti del menu
Il menu di navigazione ha un valore z-index più basso in modo che #pagebody
è sempre in cima. Questo è fondamentale poiché il codice JavaScript scorrerà sul corpo della pagina un certo numero di pixel per rivelare la navigazione sottostante.
Ho usato un simbolo di cancelletto (#) davanti a ciascuna pagina .html per interrompere alcuni comportamenti scorretti in Safari Mobile. Ogni volta che fai clic su un collegamento, viene visualizzata la barra degli URL che sposta il contenuto verso il basso. Ma quando si fa riferimento a un ID, non viene ricaricato nulla se non attraverso le chiamate JavaScript.
Posizionamento CSS
Non c'è un sacco di contenuti confusi all'interno del nostro codice CSS. La maggior parte del posizionamento viene eseguita manualmente e quindi manipolata tramite jQuery. Ma ci sono alcuni pezzi interessanti nel nostro documento.
/ ** @group core body ** / #w #pagebody position: relativo; a sinistra: 0; larghezza massima: 640 px; larghezza minima: 320 px; z-index: 99999; #w #navmenu background: # 475566; altezza: 100%; blocco di visualizzazione; posizione: fissa; larghezza: 300 px; a sinistra: 0px; inizio: 0px; z-index: 0;
Questo segmento superiore definisce gli stili per entrambe le sezioni della pagina. Il nostro menu di navigazione è largo solo 300 px, quindi questo lascia un po 'di spazio per il contenuto della pagina ancora visibile. Il pulsante di menu apri / chiudi si trova anche direttamente sul lato sinistro e sempre accessibile. Il pezzo importante qui è il valore della proprietà z-index e l'utilizzo posizione: fissa;
sul nostro navmenu.
L'intestazione della barra degli strumenti in alto è anche una sezione interessante. Questo è impostato su una posizione fissa in modo che scorrerà con il contenuto della pagina. Questo replica un effetto simile a quello che potresti trovare in qualsiasi barra del titolo dell'app iOS.
/ ** @group header ** / #w #pagebody header # toolbarnav display: block; posizione: fissa; a sinistra: 0px; inizio: 0px; z-index: 9999; background: # 0b1851 url ('img / tabbar-solid-bg.png') in alto a sinistra nessuna ripetizione; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; altezza: 44px; larghezza: 100%; larghezza massima: 640 px; #w #pagebody header # toolbarnav h1 text-align: center; padding-top: 10px; padding-right: 40px; colore: # e6e8f2; font-weight: bold; font-size: 2.1em; text-shadow: 1px 1px 0px # 313131;
Regole mobili
È facile notare che sto anche usando un'immagine di sfondo per la texture della barra dell'intestazione blu. Questo è dimensionato a 640 × 44 pixel per mantenere la struttura del layout coerente. Ma ho anche sviluppato un'immagine @ 2x per display retina iPhone / iPad. Puoi vedere entrambe le immagini qui sotto o prenderle dal mio codice sorgente demo.
- System/demo/img/[email protected]
- System/demo/img/[email protected]
Ho configurato il CSS mobile per questa funzionalità in un altro file chiamato responsive.css. Contiene due media query che sostituiscono la barra del titolo bg e l'icona del pulsante menu per i dispositivi retina.
/ ** retina display ** / @media solo schermo e (-webkit-min-device-pixel-ratio: 2), solo schermo e (min-moz-device-pixel-ratio: 1.5), solo schermo e ( min-device-pixel-ratio: 1.5) #w #pagebody header background: # 0b1851 url ('img/[email protected] ') in alto a sinistra nessuna ripetizione; dimensione di sfondo: 640px 44px; #w #pagebody header # menu-btn background: url ('img/[email protected] ') no-repeat; dimensione di sfondo: 53px 30px;
Progettare le frecce del menu
Nell'area di navigazione ho anche inserito una piccola icona a forma di freccia sul lato destro di ciascun link di menu. Questo può essere facilmente sostituito con un'immagine da qualsiasi opera d'arte creativa comune. Ma soprattutto tutti gli appassionati di CSS3 adoreranno sperimentare questo metodo.
#w #navmenu ul li a :: after content: "; display: block; width: 6px; height: 6px; border-right: 3px solid # d0d0d8; border-top: 3px solid # d0d0d8; position: absolute; right : 30px; top: 45%; -webkit-transform: rotazione (45deg); -moz-transform: rotazione (45deg); -o-transform: rotazione (45deg); transform: rotazione (45deg); #w #navmenu ul li a: hover :: after border-color: # cad0e6;
Stiamo usando il trasformare
proprietà per creare un piccolo bordo dopo il contenuto. Ho anche impostato posizione: assoluta;
in modo che possiamo spostare liberamente questi bordi attorno all'elemento del link interno. È molto facile cambiare il colore del bordo su uno stato di passaggio del mouse, che offre una sensazione più dinamica. È piuttosto incredibile quello che puoi ottenere solo usando le regole base HTML5 e CSS3.
Ma ora passiamo ai bit e ai pezzi del codice JavaScript. Ricorda che questo richiede l'inclusione nella libreria jQuery affinché il mio codice funzioni correttamente.
jQuery animato
Nello scrivere questi codici personalizzati ho creato un nuovo documento chiamato script.js. Sentiti libero di scriverli direttamente in >