Responsive Web Design ist derzeit das große Buzzword der Branche, und das aus gutem Grund; Ihre Website für verschiedene Geräte und Kontexte visuell zu optimieren, ist eine brillante Idee. Ihre Website existiert, um gesehen zu werden, warum also jemanden ausschließen?
Seltsamer RWD-Nebeneffekt
Ein bizarrer Trend, der in dieser neuen RWD-Ära aufkommt, ist, dass Desktop-Webdesigner ihre Browser verkleinern, um zu sehen, wie sich die Darstellung an den Breakpoints ändert. Der durchschnittliche Benutzer sitzt nie an seinem Schreibtisch und schrumpft und erweitert wiederholt das Browserfenster wie ein verrückter Wissenschaftler. Ja, wir sind alle seltsam. Die persönliche Website von jemandem wie Ihnen und mir hat wahrscheinlich diesen seltsamen Benutzer, der das Browserfenster verkleinert, als Zielgruppe und häufigsten Besucher, also warum nicht darauf spielen?
Responsive Texte sind ein relativ neues Unterthema, das gerade erst erforscht wird (Frankie Roberto hat kürzlich diesen Beitrag über responsive Texte veröffentlicht). Heute möchte ich darüber sprechen, wie man eine Überschrift ändert, um mit Media Queries einen eindrucksvollen Effekt zu erzielen. Dieser Effekt wird erzielt, indem viele Media Queries in kurzer Folge ausgelöst werden. Mit diesem Ansatz gibt es keine Grenzen für die atemberaubenden visuellen Effekte, die Ihre Website erzeugen kann.
Es beginnt mit einem persönlichen Projekt
Ich habe kürzlich meine persönliche Website ArleyM.com aufgefrischt. Es gibt einige „Old-School“-Responsive-Effekte auf meiner Startseite (lose basierend auf diesem Responsive Framework, das Chris Coyier vor ein paar Monaten getwittert hat), bei denen das Bild von mir unter meinem Vornamen, aber über meinem Nachnamen gleitet. Dies geschieht durch eine prozentuale Positionierung des Bildes. Ich dachte, ich wäre nachlässig, wenn ich keine weiteren auffälligen Responsive-Features auf der Website hätte, also grub ich mich zurück in meine Experimente. Ein persönliches Projekt ist der perfekte Ort, um etwas Verrücktes zu tun, wozu man sonst nie die Gelegenheit bekommt, bei Kundenprojekten. Ich beschloss, „Responsive Adjektive“ hinzuzufügen, die unten auf diesem Bild gezeigt werden.
Ich nenne die Verwendung unzähliger Media Queries „Lark Queries“ (Das Wort ‚Lark‘ bezieht sich oft auf etwas, das zum Spaß oder spielerisch getan wird, aber ich denke auch gerne daran, ein einfaches Konzept auf ein extremes Niveau zu heben). Ganz einfach, der Benutzer sieht je nach Breite seines Browsers unterschiedliche Wörter. Viele Benutzer werden nie merken, dass etwas Ungewöhnliches vor sich geht – aber wenn jemand prüft, ob die Website responsive ist, könnten sie von diesem ungewöhnlichen Effekt überrascht sein.
Erstellung des Effekts
Es gibt ein paar Möglichkeiten, dies zu erreichen. Ich habe mich entschieden, alles mit CSS zu machen. Ich habe einen Media Query Breakpoint alle 10 Pixel von 300 Pixel bis 1920 Pixel erstellt und dann ein
paar zusätzliche Breakpoints darüber für Benutzer mit zwei Monitoren und 27-Zoll-Cinema-Displays. Dann habe ich das CSS Content-Attribut verwendet, um den Text in die h2 einzufügen. Das content-Attribut wird von IE7 nicht unterstützt, aber für meine Website machen alle Versionen von IE weniger als 4% des gesamten Traffics aus.
Das HTML
Hier haben wir eine einfache h2 mit einem übergeordneten div, um den Selektor eindeutig zu machen (das ist nichts, was ich auf jeder h2 auf meiner Website haben möchte!).
Sei
Das leere span ist vorhanden, damit die CSS den Inhalt danach rendern kann. Wenn ich mit älteren IE-Versionen umgehen müsste, würde ich tatsächlich ein statisches Standardwort in das Span einfügen und es nur bei Bedarf mit bedingten Wrapper-Elementen anzeigen (wie in How to Create an IE only stylesheet).
Das CSS
@media (max-width: 980px) {
.row h2 span:after { content: 'Unusual.' }
}
Hier ist nur eine Zeile der vielen Media Queries, die ich erstellt habe (insgesamt 165!). Alles, was sich ändert, ist der Wert für max-width und der Wert für content. Die Media Queries waren der einfache Teil, sich ein anderes Wort auszudenken und es nach Länge zu sortieren, war wirklich zeitaufwendig (Danke thesaurus.com)!
Das Ergebnis ist beeindruckend – der Text ändert sich schnell mit dem Schrumpfen des Browsers. Spaß! Das Content-Element fügt nach dem Span mit jedem Media Query Breakpoint automatisch das neue Wort hinzu. Es fühlt sich einfach gut an, dieses praktische Content-Attribut einmal für etwas anderes als ul-Aufzählungspunkte zu verwenden!
Demo ansehen Dateien herunterladen
Es war interessant, die Unterschiede zu sehen, die diese selten verwendete Eigenschaft in jedem Browser hat! Zum Beispiel erlaubt nur Opera, den Inhaltstext auszuwählen oder zu kopieren/einzufügen.
Semantik verstehen
Man sagt, es sei eine bewährte Methode, den Inhalt in HTML, die Stile in CSS und das Verhalten in JavaScript zu halten. Breche ich also einige Regeln, indem ich buchstäblich eine content-Eigenschaft verwende? Ich glaube nicht.
Man könnte alle Inhaltswerte in HTML einfügen und die Media Queries verwenden, um display:none/inline umzuschalten, aber wenn ein Screenreader oder Google die Chance bekäme, all das zu lesen, wäre das Ergebnis vielleicht nicht das, was Sie sich wünschen! JavaScript könnte diese Aufgabe gut erledigen (und mit weniger Code, wenn Sie alle Inhaltswerte in ein Array einfügen), aber meine CSS-Demo funktioniert auch, wenn JS deaktiviert ist. Ich persönlich finde die Content-Eigenschaft auch charmant, weiß aber nicht warum.
Ich würde auch argumentieren, dass dieser Effekt eher in die Kategorie Stil als in die echte Inhalte fällt. Es ist ein bisschen ein Gimmick, daher mache ich mir für mein eigenes Projekt keine allzu großen Sorgen um die Semantik.
Und was nun?
Offensichtlich würde ein kleiner Teil von mir innerlich sterben, jedes Mal, wenn dieser Code mit dem exakten Text wortwörtlich verwendet würde, also wie sonst könnte diese massive Media-Query-Technik eingesetzt werden? Da sind Sie gefragt! Ich würde gerne einige Ideen in den Kommentaren hören. Lassen Sie sich nicht von der überwältigenden Erkenntnis, wie viel Zeit diese für die Umsetzung brauchen würde, von Ihrer Vorstellungskraft abhalten.
Hier sind ein paar weitere Ideen, die mir eingefallen sind:
- Farben ändern: Die Media Queries könnten Farbe/Hintergrundfarbe ändern, um durch das Farbspektrum, die Sättigungsskala zu gehen oder durch die Tönungen/Nuancen einer Farbe zu wechseln (0to255.com ist ein guter Ort, um Hex-Werte dafür zu bekommen). Dies könnte für ein kleines Element wie die Farbe eines Titels geschehen oder extremer: wie eine vollständige Änderung des Website-Farbschemas.
- Eine Bild-Faux-Animation:* Wenn Sie eine hochwertige DSLR verwenden könnten, die schnell Aufnahmen machen kann, könnten Sie einen atemberaubenden Faux-Animations-Effekt erzeugen (Bild-Preloading wäre entscheidend, dieser RWD-Effekt hat hohe Bandbreitenkosten). Hier steckt so viel Potenzial drin!
- Fokus ändern: Es wäre erstaunlich, wenn das Ändern der Browsergröße den Tiefenschärfefokus der Bilder auf der Seite verschieben würde!
- Verrückt werden: Mit etwas JavaScript sollte es einfach sein zu erkennen, dass ein Browser verkleinert wird und nicht mehr die Größe hat, die er beim Laden hatte. Sie können diese lästigen Browser-verkleinernden Designer verärgern, indem Sie die Website beim Verkleinern verrückt spielen lassen! Ich denke an Katamari Ball-Wahnsinn.
- Benutzerhinweise: Dies könnte tatsächlich praktisch genutzt werden, um Benutzern Hinweise zu geben, dass sie ihr Telefon in den Querformat drehen sollen. Aber „praktisch“ klingt im Vergleich zu den anderen Ideen irgendwie langweilig.
Während ich zu einem Schluss komme und über diese Liste von Dingen nachdenke, die man tun kann, ohne sich vor Media Queries zu scheuen, kann ich nicht anders, als das Gefühl zu haben, dass wir nur die Spitze eines Eisbergs sehen. Ein verrückter, schrumpfender Eisberg.
Ich werde jetzt schon mal das Verkleinern meines Browsers üben!
Update
Sass-Loop-Implementierung von Kitty.
Ich habe versucht, etwas Inhalt in das
<span>-Tag einzufügen, falls es mit deaktiviertem CSS betrachtet wird, oder der Benutzer etwas Sinnvolles auswählen möchte (siehe Hinweis zu Opera und Kopieren/Einfügen), oder falls Screenreader Probleme mit:after-Pseudoelementen haben. Meine Versuche haben entweder das<span>und das:afterversteckt/entfernt oder sind komplett fehlgeschlagen (wie z.B. der Versuch,content:"";auf das Span selbst zu setzen). Irgendwelche Vorschläge?Und anscheinend erlaubt css-tricks.com keine
<ul>- und<li>-Tags als Teil von „Sie können grundlegendes HTML verwenden“.Vorher glaubte ich,
<ul>und<li>seien auch Teil von „grundlegendem HTML“. :)Das (Standardinhalt in HTML einfügen, dann mit CSS austauschen) war auch mein erster Gedanke. Progressive Enhancement und alles dazu...
Vielleicht ein Span mit einer Klasse einfügen, den Inhalt dort hineinlegen, ein leeres Span mit einer anderen Klasse einfügen und dann die Media Queries verwenden, um das „Standardtext“-Span zu verstecken und Inhalte an das leere Span anzuhängen? Ich bezweifle, dass ich so erfahren mit CSS bin wie die meisten Nutzer hier, und ich bin im Moment auf einem iPad, also kann ich es nicht testen, aber es ergibt in meinem Kopf Sinn.
Meine Hoffnung war, überflüssige Markups wie leere Spans zu vermeiden und alles mit
<span>Standard</span>zu machen, aber meine Versuche, das<span>zu entfernen, haben auch das Pseudoelement entfernt.Cool, ich habe auch etwas mit Media Queries gemacht. Ich bin gar nicht auf die Idee gekommen, content: „“; zu verwenden.
Man sollte hinzufügen
Superrrr
Danke für den Beitrag!
Es war nett, das „Easter Egg“ im Text zu haben :)
Habe es nicht gesehen!
Es ist auch ein _Highlight_ für mich ;)
Kreatives Denken, aber... reden wir über ineffiziente Selektoren! Ich bin mit der Anzahl der Media Queries (irgendwie) einverstanden, aber der Selektor könnte erheblich beschleunigt werden, indem man dem Span einfach eine ID zuweist und einen
#word:after-Selektor verwendet.Ich bin ehrlich; an Effizienz habe ich nie gedacht! Die gesamte Prämisse ist etwas dekadent, aber ich habe Glück, dass meine Zielgruppe Web-Nerds und nicht Dial-up-Oma ist!
Tolle Idee!
Hallo! Arley McBlain, ich benutze die Inhaltsänderung in Media Queries kaum! Danke!~
Warte auf das nächste! ;-)
Ich mag den Ansatz, vielleicht noch mehr Ihre Analyse. RWD wird immer größer, macht aber immer noch Babyschritte. Diese Art des Denkens kann helfen, neue Ideen zu fördern, die zu bewährten Praktiken werden könnten. Mach weiter, Arley!
Ich hoffe, das setzt sich durch. Ich spiele schon seit ein paar Minuten damit herum und es gibt viele Dinge, die man damit machen kann.
Das ist absolut atemberaubend! Werde es auf jeden Fall ausprobieren!
Welche Art von Mentalist läuft mit seinem 27-Zoll-Monitor mit voller Browserbreite? Ich habe einen 27-Zoll-iMac, und selbst die halbe Breite ist manchmal übertrieben.
Ich benutze einen 42-Zoll-Bildschirm, surfe auf meinem Fernseher. :)
Ich habe gerade mein Browserfenster auf 3200 Pixel Breite geöffnet, nur um zu sehen, was seine Seite macht. :)
Die Idee, den Inhalt nur durch die Verwendung von Media Queries zu ändern, gefällt mir wirklich.
Das Span ist eine unnötige Markup, wenn man die ::before oder ::after Pseudoelemente verwendet.
man kann es einfach an h2::after { content:“WORDS“; } anhängen
Der Titel sollte lauten: „165 Media Queries oder weniger“!
Guter Artikel, aber.
Denken Sie daran als Pre-Prozessor-Witz... oder ist das zu „frech“?
Okay, dann „weniger“ davon. Ja, ich habe verstanden, was Sie meinten.
Natürlich! Wie bin ich nicht darauf gekommen! Ich ärgere mich offensichtlich über schlechte Grammatik
Für diejenigen, die vielleicht an „Bloat“ denken
1) Entspannen Sie sich =)
2) Denken Sie daran, dass gzip mit hochgradig repetitiven Texten gut funktioniert.
Finden Sie nicht, dass es besser ist, eine unsortierte Liste mit geschriebenen Wörtern in HTML zu verwenden, z.B.
und dann jedes „li“-Element „anzeigen/verstecken“?
Ich bevorzuge mehr Text in HTML, besonders „Schlüsselwörter“.
Man könnte den gleichen Effekt auf verschiedene Arten erzielen. Ich denke, ein JS-Array würde Ihnen noch schlankeren Code liefern.
Ich liebe CSS und ich liebe diese verrückte Verwendung des Content-Tags. Auch wenn es nicht die effizienteste ist, denke ich, es hätte einen besseren Beitrag ergeben können, das ist schließlich CSSTricks!
Fabelhafter Effekt. Ich werde das auf meinem Blogger-Blog ausprobieren. Leider gibt es einen Mangel an Tutorials zum Entwerfen und Entwickeln von Blogger-Vorlagen. Ich hoffe, Chris liest das :)
Immer mehr Benutzer wechseln von Blogger zu Plattformen wie WordPress. Das kann gut für Sie sein.
Wo ein Mangel herrscht, da ist eine Gelegenheit! Lernen Sie alles über Blogger-Vorlagen und Sie werden feststellen, dass Sie viel großartiges Material für eine Nischen-Website haben.
Ausgezeichneter Artikel! Ich bin mir nicht ganz sicher, ob dies eine gute Technik für tatsächliche Websites ist, aber sie ist definitiv gut für persönliche Websites.
Danke für das Schreiben dieses Artikels, Arley!
@ArleyM: Deshalb bin ich nicht zu WP gewechselt. Ich lerne, wie man Blogger-Vorlagen entwirft und sich eine Nische aufbaut, wie Sie sagten.
Wenn Sie zwei Monitore haben, versuchen Sie, das Fenster über beide Bildschirme zu vergrößern... Sie erhalten eine ganz besondere Nachricht lol.
– „Sei ein Angeber wegen deiner verrückten Monitore“
Hier ist mein Versuch zum Thema Farbänderung
http://imight.be/wicked/smooth
Das hat meinen Tag gemacht!
Meiner auch. :D
Es ist wirklich einzigartig. Sogar genial.
Schön, hier zu sein! Eine gute Plattform, um mehr über Queries und anderes zu lernen:)
Ich schätze diese Arbeit!
Hier ist ein schneller Versuch der Tiefenschärfe-Idee, könnte flüssiger sein, aber es ist spät ;)
http://open-sor.es/dof.html
Für welchen Browser hast du das entwickelt? Ich bin neugierig, ob wir es auf die nächste Stufe heben können!
Ich war bereit zu sagen – es funktioniert nicht.
Dann sah ich den Trick. ; )
Mir gefällt, dass du Media Queries verwendest, um Höhen zu überprüfen. Das kann auch sehr nützlich sein.
Ich habe dein Beispiel neben dieser coolen Website hier als Lesezeichen gespeichert.
Danke für das Teilen.
Oh, großartig! Vertikal vergrößern! Ziemlich cool. Das könnte der Anfang von etwas sehr Interessantem sein!
Danke!! Das ist wirklich ein hilfreiches Tutorial…
Wirklich toll, danke fürs Aufschreiben all dieser Queries! Ich werde das definitiv subtil irgendwo verwenden…
Das hat meinen Freitag verschönert. Danke!
Brillanter Artikel! Vielen Dank!
Stellen Sie sich nur vor, was diese Technik mit Porno-Websites machen könnte…!
Danke, Arley. Ich habe mir den Effekt auf deiner Website angesehen – sehr cool. Ich fühle mich inspiriert :-)
Suchmaschinen haben bisher noch nicht implementiert, CSS-Inhalte zu crawlen und zu indexieren
content: "some text", seien Sie also vorsichtig, wenn Sie ihn verwenden, falls Sie ihn in den SERPs erscheinen lassen möchten.Vielen Dank, Arley, für diese Seite und all die nützlichen Informationen hier.
Diese Seite ist einer meiner Lieblingsorte. Ich komme immer hierher, wenn ich etwas Neues, Cooles und Kreatives lernen möchte.
Weiter so! :D
Wow! Unartige Entwickler!! Schlagen Sie wirklich vor, Inhalte in CSS zu platzieren???
Abgesehen davon ist dies ein schönes & unterhaltsames Tutorial, sollte aber wirklich nicht auf einer Website verwendet werden, es sei denn, es gibt keinen gewünschten semantischen Wert für den Text, dann ist es natürlich in Ordnung.
Außerdem stimme ich einem früheren Kommentar zu, ich würde JS verwenden, um den gleichen Effekt zu erzielen…
Es wäre nicht schwer, mit semantischen Anfängen zu beginnen
und dann JS verwenden, um den Text nach Kommas zu trennen und je nach Browserbreite nur einen anzuzeigen.
Wutausbruch beendet, entschuldigen Sie das Trollen, ich mag den Effekt trotzdem!
Ein früherer Kommentar schlug vor, eine unsortierte Liste zu verwenden und nur die entsprechenden Elemente anzuzeigen/auszublenden. Das erscheint mir semantischer, ohne auf JS zurückgreifen zu müssen.
In der Tat, eine Hilfsanwendung. Danke fürs Teilen.
Ich habe einige Bild-Sprites und bewegte Divs hinzugefügt, um einen alten Klassiker nachzubilden: http://btraut.com/labs/mediamario/
Ich hoffe, es gefällt Ihnen!
Das ist so gut!
Wie kann ich einen Teil des Inhalts entfernen? Mein Website-Titel in meiner Navigationsleiste ist für kleine Bildschirme zu lang. Er lautet „No Skillz | Carlisle & Finch and Softball“. Ich möchte, dass er auf kleinen Bildschirmen nur „Carlisle & Finch Softball“ lautet. Kann mir jemand in die richtige Richtung weisen, wie ich diese Lösung finde. Danke
Entschuldigung, ich habe meinen Code vergessen
<a class="navbar-brand text-muted team-name" href="#">No Skillz | Carlisle & Finch Softball</a>