Mobile App Design / Dev Building Navigation mit jQuery
Smartphones sind jetzt mit sehr effizienten Webbrowsern ausgestattet. JavaScript ist leistungsfähiger als je zuvor und kann mit Hilfe von Codebibliotheken wie jQuery erweitert werden. Wenn Sie die neuesten HTML5 / CSS3-Spezifikationen hinzufügen, ist es möglich, mobile Web-Apps mit ein paar einfachen Frontend-Codes zu erstellen.
In diesem Tutorial zeige ich Ihnen, wie Sie eine mobile Website / Webapp erstellen können. Wir verwenden CSS3-Medienabfragen für das Targeting auf bestimmte Geräte und Bildschirmauflösungen. Ein wenig jQuery hilft dabei, das Menü zu animieren und externen Seiteninhalt mit Ajax-Aufrufen zu laden. Das Layout kann sogar erweitert werden, um in normalen Desktop-Browsern wie Chrome oder Firefox korrekt dargestellt zu werden.
- Live Demo
- Quellcode
Seitenstruktur definieren
Beginnen wir damit, zuerst die HTML-Seite durchzugehen und sie mit einigen CSS-Regeln zu gestalten. Ich werde die meisten ungewöhnlichen Meta-Tags in der Kopfzeile überspringen, da sie die Web-App nicht direkt betreffen. Es gibt jedoch einige, die ich erwähnen sollte, und zwar aus dem folgenden Ausschnitt:
X-UA-kompatibel Beschreibt, wie Ihr Dokument in bestimmten Browsern dargestellt werden soll. Es ist ein interessantes Szenario beim Codieren in HTML5, daher muss ich mir nicht allzu viele Sorgen machen. Jedoch die meta Sichtfenster Tag ist sehr wichtig. Das mobile Browserfenster wird auf 100% anstelle des standardmäßigen Zoomeffekts eingestellt.
Es ist auch möglich, den Benutzerzoom mit dem Inhaltswert zu deaktivieren benutzerskalierbar = nein
. In diesem Fall möchten wir jedoch nur die volle Bildschirmbreite so einstellen, dass sie unserer Gerätebreite entspricht. Mit den Apple Web App-Tags kann die Website als Symbol für den Startbildschirm auf Ihrem iPhone oder iPod Touch gespeichert werden. Nicht unbedingt notwendig, aber auf jeden Fall einen Besuch wert.
Innerer Körperinhalt
Im Body Tag habe ich einen Wrapper div mit der ID eingerichtet #w
. Ich habe das Layout in zwei weitere Divs mit IDs aufgeteilt #pagebody
und #navmenu
. Die gesamte Seitenbreite ist wahlweise auf 640 Pixel beschränkt, sodass das Layout auf eine strikte Zahl skaliert wird.
Das Navigationsmenü erhält einen niedrigeren Z-Index-Wert, so dass #pagebody
ist immer an der Spitze. Dies ist wichtig, da der JavaScript-Code um eine bestimmte Anzahl von Pixeln über den Seitenkörper gleitet, um die darunter liegende Navigation anzuzeigen.
Ich habe vor jeder HTML-Seite ein Hash-Symbol (#) verwendet, um schlechtes Verhalten in Mobile Safari zu verhindern. Wenn Sie auf einen Link klicken, wird die URL-Leiste angezeigt und der Inhalt wird heruntergedrückt. Beim Referenzieren einer ID wird nichts außer durch JavaScript-Aufrufe neu geladen.
CSS-Positionierung
Es gibt nicht viele verwirrende Inhalte in unserem CSS-Code. Die Positionierung wird größtenteils manuell durchgeführt und anschließend über jQuery bearbeitet. Es gibt aber einige interessante Stücke in unserem Dokument.
/ ** @group core body ** / #w #pagebody position: relativ; links: 0; Max-Breite: 640px; min-Breite: 320px; z-Index: 99999; #w #navmenu Hintergrund: # 475566; Höhe: 100%; Bildschirmsperre; Position: feststehend; Breite: 300px; links: 0px; oben: 0px; z-Index: 0;
Dieses obere Segment definiert Stile für beide Abschnitte der Seite. Unser Nav-Menü ist nur 300 Pixel breit, so dass noch etwas Platz für den Seiteninhalt vorhanden ist. Die Menüschaltfläche Öffnen / Schließen befindet sich ebenfalls direkt auf der linken Seite und ist immer zugänglich. Der wichtige Teil hier ist der Z-Index-Eigenschaftswert und die Verwendung Position: feststehend;
in unserem navmenu.
Die Kopfzeile der oberen Symbolleiste ist ebenfalls ein interessanter Abschnitt. Dies ist auf eine feste Position eingestellt, so dass mit dem Seiteninhalt gescrollt wird. Dies repliziert einen ähnlichen Effekt, den Sie in jeder Titelleiste der iOS-App finden würden.
/ ** @group header ** / #w #pagebody header # toolbarnav display: block; Position: feststehend; links: 0px; oben: 0px; z-Index: 9999; Hintergrund: # 0b1851 URL ('img / tabbar-solid-bg.png') oben links keine Wiederholung; Grenzradius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; Rand unten rechts Radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; Rand unten links Radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; Höhe: 44px; Breite: 100%; Max-Breite: 640px; #w #pagebody header # toolbarnav h1 text-align: center; Polsterauflage: 10px; Polsterung rechts: 40px; Farbe: # e6e8f2; Schriftdicke: fett; Schriftgröße: 2.1em; Text-Schatten: 1px 1px 0px # 313131;
Mobile Regeln
Es ist leicht zu bemerken, dass ich auch ein Hintergrundbild für die blaue Textur der Kopfzeile verwende. Diese hat eine Größe von 640 × 44 Pixel, um die konsistente Layoutstruktur zu erhalten. Ich habe aber auch ein image @ 2x für iPhone / iPad Retina Displays entwickelt. Sie können beide Bilder unten sehen oder aus meinem Demo-Quellcode entnehmen.
- System/demo/img/[email protected]
- System/demo/img/[email protected]
Ich habe das mobile CSS für diese Funktionalität in einer anderen Datei mit dem Namen eingerichtet responsive.css. Es enthält zwei Medienabfragen, die die Titelleiste bg und das Menütasten-Symbol für Retina-Geräte ersetzen.
/ ** retina display ** / @media only screen und (-webkit-min-device-pixel-ratio: 2), nur screen und (min-moz-device-pixel-ratio: 1,5), nur screen und ( min-device-pixel-ratio: 1,5) #w #pagebody header background: # 0b1851 url ('img/[email protected] ') oben links keine Wiederholung; Hintergrundgröße: 640px 44px; #w #pagebody header # menu-btn background: url ('img/[email protected] ') no-repeat; Hintergrundgröße: 53px 30px;
Menüpfeile gestalten
Im Navigationsbereich habe ich auch ein kleines Pfeilsymbol auf der rechten Seite jedes Menülinks eingefügt. Dies kann leicht durch ein Bild aus einer Creative Commons-Grafik ersetzt werden. Aber vor allem CSS3-Fans werden diese Methode gerne ausprobieren.
#w #navmenu ul li a :: after content: "; display: block; width: 6px; height: 6px; border-right: 3px solid # d0d0d8; border-top: 3px solid # d0d0d8; position: absolut; rechts; : 30px; oben: 45%; -webkit-transform: drehen (45deg); -moz-transform: drehen (45deg); -o-transform: drehen (45deg); transform: drehen (45deg); #w #navmenu ul li a: hover :: after border-color: # cad0e6;
Wir benutzen die verwandeln
Eigenschaft, um einen kleinen Rand nach dem Inhalt zu erstellen. Ich setze auch ein Position: absolut;
So können wir diese Ränder frei um den inneren Link verschieben. Es ist sehr einfach, die Randfarbe in einem Schwebeflugzustand zu ändern, was ein dynamischeres Gefühl vermittelt. Es ist ziemlich unglaublich, was Sie mit einfachen HTML5- und CSS3-Regeln erreichen können.
Aber jetzt kommen wir zu den kleinen Teilen des JavaScript-Codes. Beachten Sie, dass dies ein Include in die jQuery-Bibliothek erfordert, damit mein Code ordnungsgemäß ausgeführt werden kann.
jQuery animiert
Beim Schreiben dieser benutzerdefinierten Codes habe ich ein brandneues Dokument mit dem Namen erstellt script.js. Fühlen Sie sich frei, diese direkt in zu schreiben >