Kürzlich habe ich auf der CSS Dev Talk Clarissa Petersons Vortrag zur responsiven Webtypografie besucht. Ein Teil davon befasste sich mit Zeilenlänge und Lesbarkeit. Natürlich gibt es für jede Regel Ausnahmen und Ihre Erfahrungen können variieren, aber das traditionelle Denken besagt, dass Fließtext (langer Text, mehrere Absätze, der mehr als einen Blick zum Lesen benötigt ...) zwischen 45 und 75 Zeichen pro Zeile liegen sollte, um angenehm zu sein. Kürzer ist umständlich, länger macht es leicht, den Platz zu verlieren und die nächste Zeile zu finden.
In einer Welt fester Breiten ist es relativ einfach, diesen Text zwischen 45-75 Zeichen pro Zeile zu bringen. Sie wählen eine gute Fließtextschriftart, passen die Schriftgröße und die Breite des Containers an, damit es ungefähr stimmt.
Aber was tun Sie in einer Welt flexibler Breiten?
Nun, nur weil sich die Containerbreite ändern kann, bedeutet das nicht, dass Sie eine angenehme Zeilenlänge opfern müssen. Sie können die Breite des Containers sowie die Schriftgröße an bestimmten Haltepunkten (Media Queries) anpassen, um sie so nah wie möglich zu bringen. Denken Sie daran, dass es nicht exakt sein muss, das ist keine exakte Wissenschaft.
Aber wie testet man, wie viele Zeichen in einer bestimmten Zeile stehen? Clarissa hatte eine clevere Idee, einfach über 45 Zeichen zu zählen und eine span-Umgebung einzufügen, die Sie gestalten, um die Textfarbe zu ändern, und diese span-Umgebung dann bei 75 Zeichen zu schließen. So können Sie visuell sehen, wo diese Brüche sind. Hier sind Clarissas Folien (eingebettet), auf der Folie mit der span-Idee
Ich dachte, das wäre eine nette Sache, um sie zu automatisieren, damit man sie auf jeder Seite verwenden kann. Bookmarklets sind dafür großartig. Also hier sind wir
Siehe den Stift Bookmarklet, das den Text zwischen 45 und 75 Zeichen rot färbt. von Chris Coyier (@chriscoyier) auf CodePen
Sie ziehen diesen Button in Ihre Lesezeichenleiste und klicken dann auf jede Seite, auf der Sie ihn verwenden möchten. Zuerst klicken Sie darauf, um ihn zu aktivieren, dann klicken Sie auf ein Fließtextelement (wie einen Absatz). Dann können Sie das Fenster umher verschieben, um zu sehen, wo die Zeile bricht, und versuchen, es passend zu machen.
Ich habe hier keine ausgefallenen Algorithmen verwendet, aber durch einfaches Anpassen der Dinge habe ich es bei einer einfachen zentrierten Textspalte ziemlich gut hinbekommen

Was aus diesem CSS stammt
body {
font-family: "Lucida Grande", sans-serif;
margin: 20px auto;
width: 95%;
font-size: 70%;
line-height: 1.4;
}
@media (min-width: 400px) {
body { width: 90%; font-size: 75%; }
}
@media (min-width: 700px) {
body { width: 80%; font-size: 90%; }
}
@media (min-width: 850px) {
body { width: 70%; font-size: 100%; }
}
@media (min-width: 1000px) {
body { width: 60%; font-size: 110%; }
}
@media (min-width: 1100px) {
body { width: 50%; font-size: 115%;}
}
@media (min-width: 1450px) {
body { width: 40%; font-size: 125%; }
}
typesetwith.me ist auch ziemlich cool.
Es bietet einige weitere Steuerelemente, mit denen Sie mit Typografie experimentieren können, während Sie im akzeptierten Bereich bleiben.
Ziemlich raffiniert. Wenn Sie auf so etwas stehen, habe ich ein Bookmarklet für ähnliche Zwecke erstellt, das aber anders funktioniert. Es zeigt die durchschnittliche Zeilenlänge an und ermöglicht Live-Anpassungen der Schriftarteigenschaften, um sie zu optimieren, bis sie stimmen. Es ist hier & auf Github.
Schönes Bookmarklet, um die Messung schnell zu überprüfen. Wenn gutes Maß das Ziel ist, warum die Containerbreite nicht in ems festlegen? Eine Zeichenbreite beträgt etwa ein halbes em, sodass eine Zeile mit 45-75 Zeichen etwa 23-37 ems beträgt.
http://codepen.io/xavieralexandre/pen/qDjLI
Es gibt auch FlowType.JS von Simplefocus.com.
Es wird aktiv entwickelt, ich verfolge das Repository und erhalte ständig Kommentare.
Ein kleines Problem, das es hat, ist, dass es Ihnen nicht anzeigt, wie viele Zeichen pro Zeile Sie haben, aber das ist etwas, das ich bereits mit ihnen besprochen habe. Wenn hier jemand JavaScript wie die Götter kennt und helfen möchte, dann kontaktieren Sie diese Jungs.
Chris' Demo ist einfach genial.
„Natürlich gibt es für jede Regel Ausnahmen und Ihre Erfahrungen können variieren.“
Wie vielleicht der Artikel, den Sie gerade geschrieben haben :)
CSS-Tricks-Artikel haben auf einem großen Bildschirm etwa 130-140 Zeichen pro Zeile. Ich finde sie nicht besonders störend zu lesen.
Sicher. Und auf einem großen Bildschirm und auf einer Seite wie dieser hat man den Luxus, das Fenster nach Belieben verkleinern zu können.
@ Xavier Clarissa (volle Offenlegung: meine großartige Frau ;) betont die Verwendung von ems gegenüber Pixeln. Wenn Sie zu Folie 15 in ihrem Deck zurückkehren, hat sie einen Abschnitt, in dem sie erklärt, warum Designer sie umarmen müssen, insbesondere für responsive Designs / Lesbarkeit.
Ich habe nach einer Lösung für die Handhabung der Schriftgröße für eine Website gesucht, die ich mit dem flexiblen Responsive-Design von Twitter Bootstrap erstellt habe. Vielen Dank für diesen Artikel, er hilft mir zur richtigen Zeit :)
Hallo Chris,
Alles, was gesagt wird, klingt für einen Neuling wie mich magisch. Bieten Sie oder diese Seite Schulungen im Webdesign mit besonderem Schwerpunkt auf CSS und PHP an?
Ich möchte die Schulung absolvieren und das Wissen meinem neu gestarteten Blog-Beratungsservice hinzufügen.
Vielen Dank und ich freue mich auf eine positive Antwort.
Chris… Solange wir über Schriftgröße und benutzerfreundliche Lesbarkeitsstufen sprechen, habe ich einen relativ großen Desktop-Monitor – nichts Überragendes. Tricks ist eine der wenigen Seiten, die meiner Meinung nach „responsiv“ richtig machen. Viel zu viele verwenden immer noch „neunhundert in der Mitte mit ein paar mobilen Geräte-Umstrukturierungen.“ Tricks nutzt den größten Teil meines Bildschirms sehr effektiv, ABER (um die von Ihnen geliebten Bärenanalogien zu verwenden) – für Schriftgröße und Augenbelastung – auf einem breiten Bildschirm, Desktop: Ihr erster Absatz auf einem einzelnen Artikelbeitrag ist für die Schriftgröße „genau richtig“. Leicht zu sehen aus Stuhlentfernung, keine Augenbelastung, einfache Augenspurung. Der Rest des Fließtextes ist „zu klein“, um ihn aus Stuhlentfernung leicht sehen zu können, und ich muss langsamer werden und mich anstrengen. Und die Größe der Kommentar-Schriftart, nun, ich muss den Monitor wie ein Telefon in die Hand nehmen und blinzeln. (Die Fotos haben eine gute Größe, man erkennt sie aus der Ferne.)
Ich erwähne das, weil ich weiß, dass Sie solches Feedback mögen und obwohl ich weiß, dass Sie versuchen, das Scrollen zu minimieren, frage ich mich, ob es Zeit ist, über Breakpoints für die Schriftgröße auf dem Desktop nachzudenken. Diejenigen von uns mit „männlich großen“ Computern können eine größere Schriftgröße vertragen, wirklich. Wir haben Platz. Für die meisten von uns könnten Kommentare sogar zweispaltig sein, sie erstrecken sich normalerweise weit, weit unter die Seitenleiste. (Das ist ein „Trick“, den ich noch nie zuvor gesehen habe)
Ich sehe, wie das in einer Situation verwendet wird, in der Twitter Ihnen anzeigt, wie viele Buchstaben Sie über dem Limit sind.
Schönes, einfaches Bookmarklet, Chris, und einige noch leistungsfähigere in den Kommentaren.
Noch eine weitere *Sache*, an die ich mich erinnern und die ich zu meiner Checkliste für Best Practices hinzufügen muss, wenn ich eine neue Website entwickle.
„Je mehr ich lerne, desto weniger weiß ich.“
Ich habe mich mit dem Auslesen von Zeichen pro Zeile im laufenden Betrieb beschäftigt – bisher ist der beste Ansatz, den ich mit nicht-Framework-JS gefunden habe, die Erstellung einer doppelten Array-Kopie des Elements und das Einfügen von spans für jedes Wort und die Überprüfung des offsets eines jeden Wortes.
Ich kann dann bestimmen, wie viele Zeilen Text es gibt, und dies dann basierend auf den Zeichen im Element mitteln, um eine Annäherung an die Zeichen pro Zeile zu erhalten.
Eine genauere Methode wäre, um jedes Zeichen einen span einzufügen, ihren offsetTop abzurufen und die Schleife zu stoppen, sobald ein Unterschied im offsetTop festgestellt wird.
Ich bin jedoch kein JavaScript-Experte, und mein Code ist schrecklich. Wenn jemand eine Möglichkeit kennt, den offsetTop eines Zeichens zu erhalten, ohne einen span einzufügen, lassen Sie es mich wissen. Ich würde es lieber ohne jQuery tun, wenn es möglich ist.