Ich entwerfe eine Menge einfacher, einseitiger Web-Artikel für den Verkauf oder per E-Mail. Ich stoße häufig auf Probleme mit Überschriften und den gewünschten Zeilenumbrüchen bei verschiedenen Medienbreiten.
Zum Beispiel könnte ich eine Überschrift haben wie:
Unser New thingamabob ist das Beste seit geschnittenem Brot!
Ohne auf Zeilenumbrüche zu achten, wird die Zeile folgendermaßen umbrochen:
Unser New thingamabob ist das Beste seit
geschnittenem Brot!
Bei voller Webgröße möchte ich die Zeile nach "the" brechen. Zwei Linien erstellen.
Unser New thingamabob ist das
Beste seit geschnittenem Brot!
Für einen Bildschirm mit mittlerer Breite würde ich zweimal brechen:
Unser New thingamabob
ist das Beste
seit geschnittenem Brot!
Bei noch schmaleren Bildschirmen würde ich nach "new", nach "thingamabob" und nach "thing" brechen. Vier Zeilen erstellen.
Unser New
thingamabob
ist das Beste
seit geschnittenem Brot!
Ich wirklich nicht will , Umbrüche verwenden ( <br>
) , weil die hart-Sets der Pausen in allen Größen. Bis jetzt habe ich Medienanfragen und Breite Prozentsätze für die verschiedenen verwendeten h1
- h5
Tags , so dass die Breite der Tag Kräfte eine Pause. Aber das scheint mir "hacky" (es ist auch manchmal sehr temperamentvoll, basierend auf dem tatsächlichen Text).
Was ist der beste Weg, um Zeilenumbrüche zu kontrollieren, ohne sie fest in HTML zu programmieren?
Die beste Vorgehensweise besteht darin, zu erkennen, dass Sie keine wirkliche Kontrolle über Zeilenumbrüche im Web haben, und es ist am besten, dies zu berücksichtigen.
Jede gegenteilige Lösung muss ausnahmslos hacky sein. Da es wird ein Hack als HTML definierte Benutzerzeilenumbrüche außerhalb der harten haftet nicht Codierung. Sie könnten es mit JS ziemlich leicht tun. Richten Sie Ihre Haltepunkte mit leeren Abschnitten mit eindeutigen Klassen ein und verwenden Sie dann die Ansichtsfenstergröße, mit der Sie BR-Tags in jeden gewünschten Abschnitt einfügen können.
Es gibt einige CSS-Stile, die in neueren Browsern verwendet werden können, um den Zeilenumbruch im Browser zu steuern. In dieser Situation erhalten Sie jedoch nicht die exakte Kontrolle, die Sie suchen.
Auf der anderen Seite würde ich die Breite des DIV für jedes Ansichtsfenster unterschiedlich einstellen, wenn Ihr Ziel nicht darin besteht, bestimmte Zeilenumbrüche zu kontrollieren, sondern sicherzustellen, dass sich Ihr Textblock in relativ geraden Zeilen stapelt. Es wird nicht perfekt sein, aber wahrscheinlich ziemlich nahe und könnte der beste Kompromiss sein.
quelle
Dafür gibt es ein JQuery-Plugin, Balance Text .
Es handelt sich um ein von Adobe erstelltes Plug-in, das zusammen mit dem Vorschlag
text-wrap: balance;
von Adobe erstellt wurde , eine CSS-Option zu erhalten , die genau dies ermöglicht, wie die Funktion „Balance Ragged Lines“ von Adobe InDesign (hört sich toll an, aber selbst wenn sie akzeptiert wird, wird es Jahre dauern, bis die Browser dies unterstützen).Das Plugin funktioniert jedoch gerade. Es gleicht alle Elemente aus, die die Klasse
balance-text
haben oder jQuery like verwenden$('.some-elements').balanceText();
Hier ist eine offizielle Adobe-Demo , in der berechtigter Text verwendet wird .
Hier ist eine Demo, die ich mit linksbündigem
<h1>
s gemacht habe - drücken Sie Bearbeiten, um den Code zu sehen. Dies zeigt einige der Einschränkungen zum Zeitpunkt des Schreibens:Im Demo - 4 Sie werden sehen , wie alles in dem Block von ausgewogenem Text wie ein
<a>
Link,<span>
s oder Betonung wie<em>
,<strong>
,<b>
,<i>
wird etc entfernt.Wenn Sie die Demos 1, 2 und 5 vergleichen, werden Sie feststellen, dass Sie anscheinend sowohl die CSS-Klasse als auch den jQuery-Aufruf verwenden müssen.
Es scheint mäßig zuverlässig, aber manchmal unangenehm zu sein - zum Zeitpunkt des Schreibens rutscht es gelegentlich aus, wenn es sich in einer Seitenspalte befindet und einsame Waisenkinder zurücklassen (aber es scheint in 95% der Fälle zu funktionieren und ich habe es noch nicht gesehen, außer In einer Seitenspalte) und aus ungeklärten Gründen funktionieren meine Demos nicht mit Firefox, aber mit den Demos von Adobe (in IE9 + in Ordnung, kann derzeit nicht in IE8 getestet werden). Wenn Sie es verwenden, müssen Sie einige Testzeiten einkalkulieren.
quelle
Ich muss mich etwas regelmäßig damit auseinandersetzen, mit Beiträgen von Designern, die wollen, dass die Dinge auf eine bestimmte Weise brechen. Ich habe herausgefunden, dass es am einfachsten ist, einen Bereich mit einer Klasse in den Text einzufügen und diesen Bereich dann
display: block;
für die Medienabfragen zu verwenden.So würde es ungefähr so aussehen:
Dann hätte ich CSS mit so etwas:
Sie müssen es noch durcharbeiten und verfeinern, um sicherzustellen, dass die Dinge für alle Breiten so brechen, wie Sie es möchten.
Wenn es ein häufiges Problem ist, können Sie Ihre eigenen Zeilenumbruchklassen nach Twitter Bootstrap oder dem von Ihnen verwendeten Rastersystem erstellen und die Klassennamen nach der von Ihnen verwendeten Namenskonvention modellieren.
quelle
Sie können JavaScript verwenden, um die Bildschirmbreite zu ermitteln und die richtige Version (mit <br>, wie Sie sie in Ihrem Beitrag haben) über innerHTML in ein leeres div zu schreiben.
Leider passen "gewünschte Webbrüche" und "Best Web Practices" nicht zusammen. Lassen Sie Ihren perfektionistischen Wunsch los, jedes Wort an die richtige Stelle zu bringen - es gibt einfach zu viele Bildschirmmöglichkeiten und zu viele Leser, die nicht die Designer-Einstellung haben, die Sie brauchen, um Zeilenumbrüche in ihren Titeln zu beachten. Lesen Sie Responsive Web Design, um diese Probleme besser zu verstehen.
quelle
Meine aktuelle Methode ...
Und das CSS:
Breiten manchmal müssen einige Anpassungen basierend auf tatsächlichen Text verwendet wird, aber dies ist das allgemeine Schema I verwendet werden . Reduzieren Sie im Wesentlichen die Breite des
h1
Tags, sodass die Zeile dort umbrochen wird, wo sie umgebrochen werden soll.Dies funktioniert, es sind nur gründliche Tests erforderlich, um sicherzustellen, dass an den gewünschten Stellen Pausen auftreten. Dann sind aber auf jeden Fall gründliche Tests erforderlich. Es ist also nicht unbedingt mehr Arbeit in dieser Hinsicht.
quelle
margin: 0 auto; text-align: center;
nur einmal außerhalb einer Medienabfrage bewerben.Sie können an den Stellen, an denen Zeilenumbrüche zulässig sein sollen, Zeilen hinzufügen
white-space: nowrap
und platzieren<wbr>
. Wenn dies nicht ausreicht und Sie eine genaue Kontrolle über Medienabfragen wünschen, können Sie dennoch Klassen wie hinzufügen<wbr class="mobileOnly">
<wbr>
doc: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbrquelle