Sie benötigen eine mobile Strategie für Ihre Website. Sie müssen sich zwischen Responsive Design oder einer speziellen mobilen Website entscheiden, richtig? Vielleicht nicht. Vielleicht können Sie eine Vielzahl von Strategien kombinieren.
Ich und das Team arbeiten jeden Tag hart an CodePen. Aber wir sind ein Team von drei Leuten. Unsere mobile Strategie besteht darin, uns so gut wie möglich darum zu kümmern, wenn wir 1) Zeit haben und 2) gute Ideen haben, wie wir die Dinge handhaben sollen.
Beispiel für ein responsives Template
Nehmen Sie unsere Seite "Aktuelle Aktivitäten". Diese Seite ist so einfach, dass das Schreiben von ein paar Media Queries, um Dinge neu anzuordnen, und ein wenig JavaScript zum Umschalten der Filter eine gute Lösung ist.

Beispiel für eine mobil-spezifische Vorlage
Schauen Sie sich nun unsere Detailseite auf dem Desktop an.

Diese Seite ist weitaus komplizierter. Sie teilt sich das gleiche Layout wie die Editor-Ansicht. Sie können den Vorschau-Bereich per Drag & Drop größer oder kleiner machen. Es gibt Tastaturbefehle. Sie auf Desktop-Größe zu belassen, war umständlich, da der Text mikroskopisch klein war. Die Verwendung der richtigen Meta-Tags und die Anzeige in mobiler Größe führten zu einem sehr umständlichen Layout und umständlichem Scrollen, wo dies überhaupt möglich war.
Dies war die schlechteste mobile Ansicht auf der gesamten Website.

Ich hätte mit dieser Ansicht einen Krieg mit CSS führen und sie in Form bringen können. Aber selbst wenn ich das getan hätte, wurde eine ganze Menge JavaScript geladen, das keinen Zweck mehr hatte. Stattdessen entschied ich mich für eine mobil-spezifische Vorlage. So konnte ich die vollständige Kontrolle über HTML, CSS und JavaScript übernehmen und nur das laden, was benötigt wurde. Ich konnte fast alles wiederverwenden, weil wir *alles* aus einer modularen Perspektive angegangen sind. Ich konnte die HTML-Partials, JS-Module auswählen und eine neue CSS-Datei mit nur den benötigten Teilen kompilieren – dabei musste ich nur wenig neu schreiben.
Die Detailansicht ist jetzt viel benutzerfreundlicher, ganz zu schweigen davon, dass sie schneller ist.

Für Neugierige: Wir verwenden das Browser-Gem und wählen die zu rendernde Vorlage auf Controller-Ebene aus. Das ist UA-Sniffing, was sich nicht gut anfühlt, aber zumindest ist es serverseitig1 und basiert auf einem Open-Source-Projekt, das aktuell gehalten wird.
if browser.mobile?
render :template => 'details/mobile', :layout => "mobile-pages"
else
render :template => 'details/index', :layout => "pages"
end
Zur Aufzeichnung: Es gibt nichts, was Sie auf der mobilen Version nicht tun können, was Sie auf der Desktop-Version nicht können.
Beispiel für die Ansicht „Ähm, noch nicht ganz fertig“
Nicht jede Ansicht auf CodePen ist bisher gut auf kleinen Bildschirmen. Der Editor, wohl die wichtigste Seite der App, verwendet kein responsives Design oder eine mobile Vorlage.

Er funktioniert auf dem iPad und großen Tablets ziemlich gut, aber kleiner ist nicht so toll. Diese Ansicht wollen wir nicht halbherzig angehen. Das Belassen des Designs in Desktop-Größe hält es benutzbar, bis wir eine gute Idee dafür haben und es direkt angehen können. Es wird sehr wahrscheinlich eine mobil-spezifische Vorlage sein.
Beispiel für mobil-spezifische Teile in einer responsiven Vorlage
Schauen Sie sich unsere Profilansicht an.

Dies ist eine responsive Vorlage. Ich finde, sie funktioniert gut, **außer im Bereich der „Tabs“**, wo sie in zwei Zeilen aufgeteilt ist. Das ist umständlich und wird nicht skalieren, wenn wir möglicherweise mehr Navigation hinzufügen. Stattdessen servieren wir an dieser Stelle eine andere Partial, die eine Navigation als <code><select></code>-Menü anstelle von Tabs ausgibt.

Etwas besser, jedenfalls.
Es ist ein Prozess
Ich blogge dies nicht, um CodePen als Leuchtfeuer der mobilen Designperfektion zu präsentieren. Das ist es sicherlich nicht. Ich finde es interessant, über hybride und iterative Ansätze zur mobilen Entwicklung nachzudenken.
Keine separaten Domains/URLs, keine separaten Repositories/Codebasen, keine separaten Teams. Alles zusammen als ein großer Monolith. So wie es meiner Meinung nach sein sollte.
Sehr verwandt
RESS: Responsive Design + serverseitige Komponenten
1 Ich habe das Gefühl, dass serverseitiges UA-Sniffing besser ist, weil 1) die richtige Vorlage sofort geliefert wird, es ist kein Redirect und 2) clientseitiges UA-Testing bedeutet, einen großen Teil an JavaScript nur zu diesem Zweck bereitzustellen.
Ich wende diese Technik jetzt auf meiner persönlichen Website an, obwohl ich gerade dabei bin, zu einer vollständig responsiven Website zu wechseln und das serverseitige Gerätedetektions-Bit abzuschaffen.
Wenn Sie nur prüfen, ob ein Gerät mobil oder nicht mobil ist, mache ich mir keine großen Sorgen, aber wenn Sie beginnen, sich auf UA-Geräteerkennung zu verlassen, um eine breitere Palette von Geräten zu kategorisieren, wie z. B. mobil, Tablet, Desktop, Fernseher, werden Sie auf Probleme stoßen. Ich habe über einige Bedenken bezüglich UA-Sniffing und serverseitiger Gerätedetektion geschrieben.
Ich bin definitiv der Meinung, dass unabhängig davon, ob Sie eine separate mobile Website oder eine vollständig responsive Website erstellen, beide Media Queries, flexible Raster/Bilder verwenden sollten. Das ist ein Kinderspiel für eine #RWD-Website, aber ich denke, die Leute vergessen, dass Media Queries, flexible Raster/Bilder auch auf separaten mobilen Websites nützlich sein können.
Ich freue mich zu sehen, dass einige der Ansichten auf CodePen auf mobilen Geräten verbessert werden!
Wort.
Toller Artikel, ich habe die Änderung auf Codepen neulich bemerkt und es ist eine RIESIGE Verbesserung. Lädt viel schneller und ist benutzbar.
Ich denke, es war eine großartige Entscheidung, sich für eine mobile Vorlage zu entscheiden, da sie es dem mobilen Benutzer ermöglicht, die Inhalte so formatiert zu erhalten, wie er sie benötigt.
Das wirft natürlich die Frage auf: Was ist mobil? Oder genauer gesagt, wie klein muss ein Bildschirm sein, um mobil zu sein?
Sind Tablets mobil? Oder das Verkleinern des Browserfensters?
Das Ausliefern mobiler Vorlagen ist eine nette Option, aber sie hat auch ihre eigenen Nachteile.
In der Tat. In diesem Fall erkennt es buchstäblich nur iOS, Android, Blackberry-Browser usw. in der UA. Das wird wahrscheinlich nicht mehr viele Jahre funktionieren.
Was ich wirklich sehen möchte, ist das Beste aus beiden Welten: serverseitige Erkennung der Bildschirmgröße =)
Ja! Das würde ich lieben.
Ich bin froh, dass Sie sich mit dem Thema CodePen auf Handys beschäftigen. Ich kann es kaum erwarten, CodePen auf meinem Handy/iPad zu nutzen. Ich werde mir vielleicht sogar CodePen Pro zulegen, wenn es soweit ist :D
Ich finde, es funktioniert auf dem iPad ziemlich gut.
Das tut es, aber einige Dinge (wie das Einfügen von Text) funktionieren nicht richtig.
Interessanter Artikel und schönes Design.
Was die Seite „New Pen“ betrifft, wie wäre es, wenn man HTML, CSS und JS einfach in Tabs aufteilt?
Das werden wir wahrscheinlich tun, und vielleicht auch die Vorschau als Tab, da der Platz so begrenzt ist.
Ehrlich gesagt, ich würde es gerne sehen, wenn alles als Tabs für die Desktop-Version eine Option wäre!
Vielen Dank nochmals für diese Tipps! Ich hoffe wirklich, dass sich keine Designer selbst quälen, indem sie versuchen, Projekte auf Mobiltelefonen zu erstellen. Benutzen Sie einfach eine gute alte Tastatur oder zumindest ein Tablet!
Liebe Codepen übrigens.
Vielleicht habe ich etwas im Beitrag übersehen, aber warum verwenden Sie UA-Sniffing? Warum würden Sie das Design nicht einfach auf der Viewport-Breite basieren, zum Beispiel < 640px für den mobilen Breakpoint (oder noch besser… mit ems)?
Was die serverseitige Viewport-Erkennung betrifft, könnten Sie einen Cookie setzen, der bei der nächsten Anfrage von Ihrem serverseitigen Code verfügbar ist. Das ist nicht perfekt, aber mit einer intelligenten Standardeinstellung, wenn kein Cookie vorhanden ist, kann es in einigen Fällen funktionieren.
Das ist wahrscheinlich ein guter Weg, um die Erkennung durchzuführen. Sie verlieren die allererste Anfrage, die zum Setzen des Cookies benötigt wird (nur ein Redirect, nicht zu schlimm). Dann hätte jede nachfolgende Anfrage den Cookie und Sie könnten die richtige Vorlage liefern. Kein UA-Sniffing und mehr granulare Kontrolle. Ich schätze, ab und zu wird jemand die Website mit einem super schmalen Desktop-Browser öffnen und dann mit einem mobilen Layout feststecken – was etwas umständlich wäre. Vielleicht würde der Cookie nur wie 12 Stunden halten oder so. Ich würde gerne die Viewport-Breite zusammen mit den anfänglichen Headern gesendet sehen – das wäre etwas, um die Browser-Overlords zu bitten.
@Chris: Sie können den Cookie einfach per JS beim Ändern der Browsergröße zurücksetzen. Es stimmt, dass der Server immer eine Anfrage hinterher ist, aber nur Grenzfälle werden dann zum Problem, was mit einer guten Standardeinstellung, wenn kein Cookie vorhanden ist, einigermaßen gelöst werden kann.
Toller Blog. Er ist sehr hilfreich.
Wenn Sie sagen „das Browser-Gem verwenden und die zu rendernde Vorlage auf Controller-Ebene auswählen“, was ist der „Controller“? Ist das ein neuer Begriff für Client?
Die Beispiel-Website (CodePen) ist in Ruby on Rails geschrieben, einem MVC (Model View Controller)-Framework. Ich bin kein Meister darin, so etwas zu erklären, aber kurz gesagt:
Dadurch bleibt die meiste Logik aus den Ansichten selbst heraus, was eine schöne Arbeitsweise ist (Designer werden Sie mögen). Da der Controller entscheidet, welche Ansicht angezeigt werden soll, ist er der perfekte Ort, um etwas Logik unterzubringen (wenn mobil, diese Vorlage verwenden, wenn nicht mobil, andere Vorlage verwenden).
Chris, ich muss sagen – ich bin verliebt in Codepen. Weiter so!
Ich stimme zu, Anthony. Codepen ist der Shit!
Vielen Dank für diese Informationen. Ich bin sicher, dass ich sie in meinem neuen Projekt verwenden werde.
Chris, wir hatten die gleichen Gedanken, als wir unsere Flaggschiff-Website neu gestalteten. Bezüglich des zusätzlichen JavaScripts, das geladen wurde, obwohl die Kleinbildversion es nicht benötigte, haben wir den Ballast vermieden, indem wir JavaScript-Mediaqueries und require.js verwendet haben und früh im Ladevorgang über JS MQ's geprüft haben, was wir brauchen, und es dynamisch auf die Seite geladen haben.
Test
Laut und deutlich.
Vielen Dank, Chris. Ich mag es, responsive Bootstrap CSS/JavaScript wie Twitter Bootstrap zu haben, sie haben einen Abschnitt darüber, wie man einige fertige CSS-Klassen verwendet.
Wenn Sie ein öffentliches Bootstrap haben könnten, würden wir es vielleicht verwenden.
Ich denke, wir können das verwenden, was ich DivDaving nenne („Es ist die Art und Weise, wie man Divs für fast jeden Teil der Website verwendet“), indem man alle anderen Steuerelemente ausblendet. Was denkst du darüber? Es in allen Browsern und auf allen Bildschirmen funktionieren zu lassen.
Vielleicht sollten Sie sich Detector ansehen, das Browser-, Funktions- und Bildschirmgrößen-Erkennung kombiniert.
Ich verwende einen UA-Sniffer, wenn es absolut notwendig ist – ich bin auf ein Problem in einem PHP-Projekt gestoßen, bei dem mein Kunde ein Karussell auf einem Desktop auf sehr geregelte Weise funktionieren lassen wollte, aber auf einem iPad wollte er viele Touch-Events und Swipe-Aktionen.
Das Beste, was mir einfiel, war eine Vorlage für die Hauptseite, die Teile der Seite importieren würde, und bestimmte Teile (wie das Karussell) werden importiert und unterschiedlich gerendert.
Es war cool, da man die gleichen URLs auf jedem Gerät verwenden würde (nichts von diesem „http://m.website.com“-Zeug).
Es ist definitiv ein guter Weg, um Ihre mobile Website mit einer benutzerdefinierten Seite hervorzuheben, obwohl es zusätzliche Arbeit ist, ein komplett neues Design zu codieren, anstatt ein responsives Website zu erstellen. Ich persönlich mag, wie meine responsiven Designs aussehen, und es sei denn, ich muss ein sehr spezifisches Design für einen meiner Kunden erstellen, mache ich mir nicht einmal die Mühe, eine mobile Website zu erstellen. Das ist natürlich nur meine Meinung, jeder hat andere Ansichten.
Ich verwende das folgende Karten-Responsive-Design
1- Ich habe einen speziellen Website-Downloader. Ich erhalte die Bildschirmgröße von Mobiltelefonen oder bestimme sie anhand der Größe, die ein Computer hat, und ein anderes Design ist nicht notwendig, wie z. B.
‘operamini’=>array(‘pattern’=>’Opera.Mini|Opera.Mobi|Android.*Opera’,’dev’=>’agent’,
‘model’=>’mobi_v’,’db_config’=>$db_mobile_config,’add_themes’=>’operamini’,
‘screen’=>’240-320’,’ItIs_mobile’=>TRUE),
2- Identifiziert das Gerät anhand des User-Agents und der Lade-Parameter
3- Wenn keine Größenparameter gesetzt sind (kein „screen“), wird aus einer Liste von Größen in Standardgrößen ausgewählt
4- Verarbeitet den Parser-Inhalt im Voraus. Das Ergebnis wird in Form von JSON gespeichert, was ein schnelles Herunterladen von Inhalten ermöglicht.
5- Generiert globale Labels, zum Beispiel: ‚model‘, ‚computer‘, ‚mobile‘, ‚screen‘, ‚portrait‘, ‚landscape‘, ‚width‘ und andere
6- Verwendet die Parameter ‚model‘, ‚add_themes‘, ‚screen‘ … findet eine geeignete Vorlage
7- Responsive verwendet BBCode. Zum Beispiel [photo]. Als Steuerung dient das System, wie viele Fotos auf dem Bildschirm platziert werden sollen.
8- Inhalte können auf der Grundlage von Sprache und Anzeigegeräten vorbereitet werden. Globale Labels können den gewünschten Inhalt auswählen
Englisch: http://www.cotonti.mobi/page.php?al=example_nefertiti/en
Russisch: http://www.cotonti.mobi/page.php?al=example_nefertiti
Mobil: http://www.cotonti.mobi/page.php?al=example_nefertiti&it=mobile
9- Und andere Lösungen
Entschuldigen Sie mein schlechtes Englisch.
Ein paar Dinge. Ich bin kein Nutzer von CodePen, und ich weiß, dass meine Kommentare sicherlich einen Aufruhr unter den hartgesottenen CodePen-Nutzern hervorrufen werden, nun ja, leben und leben lassen, aber ich finde, dass das Schreiben von Code in einer guten IDE eine weitaus vorteilhaftere Erfahrung ist. Wird CodePen nur dazu verwendet, HTML/CSS/JS anderen in einer Art Repository zu präsentieren, es ist nicht als Editor gedacht, richtig? Anders ausgedrückt, warum würde ich meinen Code nicht einfach auf meinem Computer testen? Ich versuche nur, den Grund für die Verwendung zu verstehen, schätze ich. Außerdem, als ich anfing, Text in den HTML- und CSS-Editoren einzugeben, klickte ich auf den Zurück-Button, um dorthin zurückzukehren, wo ich war, nur um konsequent die Aufforderung „Auf Seite bleiben / Seite verlassen“ zu erhalten, bis ich meinen Browser schließen musste, um sie loszuwerden (ich benutze Chrome). Wenn CodePen für viele funktioniert, dann ist das großartig, das ist nicht als Kritik gedacht, aber ich versuche, den Wert des Tools zu verstehen, angesichts der Zeit, die wahrscheinlich dafür aufgewendet wurde, insbesondere angesichts der verfügbaren Editoren und IDEs auf dem Markt.
Hallo Gary,
Sie liegen nicht falsch – CodePen soll Ihre IDE nicht ersetzen. Vielleicht eines Tages! Es soll etwas direkt im Browser haben, um Muster für den Austausch, die Zusammenarbeit und das Feedback sowie eine Reihe anderer Gründe zu erstellen.
Die Aufforderung „Auf Seite bleiben“ soll Sie stören, damit Sie die Seite nicht versehentlich verlassen und Arbeit verlieren. Sie können auf „Seite verlassen“ klicken und es wird Ihnen erlauben, die Seite zu verlassen.
Vielen Dank für die schnelle Antwort Chris, und das erklärt die Dinge sicherlich. Der CodePen-Editor selbst ist, gelinde gesagt, sehr beeindruckend. Tatsächlich zögerte ich, Kommentare hier abzugeben, da die Veröffentlichung nicht vollständig über CodePen handelte… das tut mir leid.
Bezüglich der Aufforderung, nur zur Information, ich habe auch diese Option „Seite verlassen“ ausprobiert, aber ich hatte die gleichen Ergebnisse. Ich bin mir nicht sicher, ob es daran lag, dass ich bereits ein paar Mal auf die Option „Auf Seite bleiben“ geklickt hatte, aber ich habe mich ziemlich in die Patsche gesetzt ;)
Ich liebe es, wie dieser Beitrag das beschreibt, was ich für den pragmatischsten Ansatz halte, um alles zur Verfügung Stehende zu nutzen, um die verschiedenen Herausforderungen zu bewältigen. Sich an eine einzige Lösung zu halten, schränkt die Vorteile und die Freiheit ein, die bei der Verwendung einer Vielzahl von Werkzeugen und Techniken geboten werden.
Responsive + bedingtes CSS/serverseitige Vorlagen + JS + alles andere, was Sinn macht, ist der richtige Weg.
Ich habe besonders dieses Zitat genossen: „Unsere mobile Strategie besteht darin, uns so gut wie möglich darum zu kümmern, wenn wir 1) Zeit haben und 2) gute Ideen haben, wie wir die Dinge handhaben sollen“, weil es widerspiegelt, wie Entwicklungsteams in der realen Welt arbeiten.
Toller Beitrag.
Ich habe von respond.js und css3-mediaqueries.js gehört, die Unterstützung für Media Queries in Browsern hinzufügen, die sie nicht unterstützen. Aber diese funktionieren nur in einem JavaScript-fähigen Browser. Warum können wir also nicht das CSS durch JavaScript oder jQuery selbst ändern? Es ist ziemlich einfach, Media Queries in jQuery-Code umzuwandeln. Wollte wissen, ob das richtig ist oder ob ich etwas vermisse.
Mach weiter so, Chris. Ich liebe deine Website und hoffe, du veröffentlichst mehr auf Lynda, besonders über WordPress-Theme-Design. Danke.