DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die hyphens Eigenschaft steuert die Silbentrennung von Text in Block-Level-Elementen. Sie können die Silbentrennung komplett verhindern, zulassen oder nur zulassen, wenn bestimmte Zeichen vorhanden sind.
Beachten Sie, dass hyphens sprachsensitiv ist. Die Fähigkeit, Trennmöglichkeiten zu finden, hängt von der Sprache ab, die im lang Attribut eines übergeordneten Elements definiert ist. Nicht alle Sprachen werden derzeit unterstützt, und die Unterstützung hängt vom jeweiligen Browser ab.
Syntax
.element {
hyphens: none | manual | auto
}
hyphens: none
Wörter werden niemals an Zeilenumbrüchen getrennt, auch wenn Zeichen innerhalb des Wortes darauf hinweisen, wo eine Trennung erfolgen könnte oder sollte.
hyphens: manual
Wörter werden nur an Zeilenumbrüchen getrennt, an denen sich Zeichen innerhalb des Wortes befinden, die Möglichkeiten zum Zeilenumbruch signalisieren. Es gibt zwei Zeichen, die eine Möglichkeit zum Zeilenumbruch signalisieren:
U+2010(HYPHEN): das „harte“ Bindestrich-Zeichen zeigt eine sichtbare Möglichkeit zum Zeilenumbruch an. Auch wenn die Zeile an dieser Stelle nicht tatsächlich umbrochen wird, wird der Bindestrich trotzdem gerendert. Wörtlich ein „-“.U+00AD(SHY): ein unsichtbarer, „weicher“ Bindestrich. Dieses Zeichen wird nicht sichtbar gerendert; stattdessen schlägt es eine Stelle vor, an der der Browser das Wort bei Bedarf umbrechen kann. In HTML können Sie­verwenden, um einen weichen Bindestrich einzufügen.
hyphens: auto
Wörter können an geeigneten Silbentrennungspunkten umbrochen werden, entweder wie durch Trennungszeichen (siehe oben) im Wort bestimmt oder automatisch durch eine sprachlich passende Trennungsressource (falls vom Browser unterstützt oder über @hyphenation-resource bereitgestellt).
Bedingte Trennungszeichen innerhalb eines Wortes haben Vorrang vor automatischen Ressourcen bei der Bestimmung von Trennpunkten innerhalb des Wortes.
hyphens: all
Veraltet, nicht verwenden. Dies war nur vorübergehend im Standard enthalten, um zu testen.
Demo
Die untenstehende Demo enthält eine Reihe von Absätzen und alles ist auf hyphens: auto; eingestellt, um das Konzept der Silbentrennung zu demonstrieren. Das lang Attribut ist auf dem übergeordneten Element auf en gesetzt.
Browser-Unterstützung
Diese Browser-Support-Daten stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version und aufwärts unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 88 | 6* | 10* | 12* | 5.1* |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 4.2-4.3* |
Safari 5+ erfordert -webkit-, Firefox 6+ erfordert -moz-, IE 10+ erfordert -ms-, iOS 4.2+ erfordert -webkit-.
Chrome < 55 und der Android-Browser unterstützen tatsächlich -webkit-hyphens: none, was der Standardwert ist, aber keine der anderen Werte.
In Firefox und Internet Explorer funktioniert die automatische Silbentrennung nur für einige Sprachen (definiert mit dem lang Attribut). Siehe diesen Hinweis für eine umfassende Liste der unterstützten Sprachen.
Wenn Sie ein webbasiertes Dokument schreiben, das dringend eine Silbentrennung benötigt, können Sie Hyphenator.js verwenden, eine Bibliothek, die auf einem umfangreichen Wörterbuch basiert und automatisch weiche Bindestriche und Nullbreiten-Leerzeichen in Ihren Inhalt einfügt.
Ohne JavaScript müssen Sie sich auf hyphens und word-wrap verlassen.
.hyphenate {
word-wrap: break-word;
overflow-wrap: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
Weitere Informationen
- Silbentrennung im Standard
- Silbentrennung bei MDN
- Wortumbruch/Silbentrennung mit CSS von Kenneth Auchenberg
- Der „aktuelle“ Stand der Silbentrennung im Web von David Newton
Gibt es eine Angabe, wann/ob Chrome hyphens: auto unterstützt?
Es bricht Wörter an der falschen Stelle, fügt keine Bindestriche hinzu und macht „hyphens: auto“ damit praktisch nutzlos.
Persönlich hätte ich lieber „hässlichen“ Blocksatz oder Text, der seinen Container verlässt, als dieses Durcheinander.
Dasselbe passierte, als ich es ausprobiert habe. Bruch an der falschen Stelle und ohne Bindestrich.
Wie vertrauenswürdig ist „Hyphenator.js“? Es sieht ziemlich gut aus, da meine Website auf Englisch und Deutsch ist. Hat jemand Erfahrungen damit?
Es ist seltsam, dass Chrome keine Silbentrennung unterstützt…
Ich habe gerade Silbentrennung verwendet und es funktioniert für Safari, aber nicht für Chrome. Sehen Sie das Wort „neurotransmitter“ auf der Tabelle
http://www.sleepmoo.com/store.html
Da fast jeder Chrome nutzt, sagen Sie, wir sollten Hyphenator.js verwenden?
*Eine Anmerkung: Silbentrennung funktioniert, wenn man Chrome auf Mobilgeräten nutzt.
Silbentrennung funktioniert in Chrome auf iOS-Geräten, da es mobile Safari zum Rendern von Webseiten nutzt.
Sollten wir auch hinzufügen
?
Es wird mit Khmer-Unicode nicht unterstützt. Wie kann ich es Khmer-Unicode unterstützen lassen?
Leider verwendet die Silbentrennung für jede Sprache Wörterbücher im Browser, und die meisten Sprachen außer Englisch werden nicht unterstützt. Dies liegt daran, dass jemand die Mühe auf sich nehmen muss, jedes Wörterbuch tatsächlich zu erstellen und Korrektur zu lesen.
Das war wirklich hilfreich. Danke!
Großartig – danke! Ich habe versucht, diese Bindestriche auf so viele verschiedene Arten loszuwerden, und keine davon hat funktioniert. Ich habe Ihre hyphenate-Klasse mit den Attributen „none“ verwendet, und sie funktioniert perfekt in Firefox und IE. Ich mag Sie.
Ich habe heute eine Seite mit seltsamen Umbrüchen bei der Nutzung von Chrome gesehen. Also habe ich nachgeforscht, was los sein könnte, und diesen informativen Artikel gefunden.
Zur Referenz für andere, die diesen Artikel finden: Es scheint, dass Chrome Silbentrennung immer noch nicht unterstützt :(
http://caniuse.com/#search=hyphen
Ich habe dies im November 2012 auf meiner Website hinzugefügt. Ich konnte den Text blockformatieren und er sah viel besser und lesbarer aus. Dann habe ich es in Chrome ausprobiert. Was für eine Katastrophe. Ich musste die Blocksatzformatierung ausschalten, weil sie in Chrome furchtbar aussieht.
Es gab auch Probleme mit der Anzahl der Wörter, die Browser in einem Absatz trennen konnten, was Typografen nicht gefallen würde. Ich würde sagen, es ist noch nicht bereit. Ich benutze es immer noch, aber ich habe die Textblocksatzformatierung wegen Chrome ausgeschaltet.
Wann wird Chrome die Silbentrennung unterstützen? Sie liegen hinter Firefox, IE und Safari (mobil und Desktop).
Sollte es nicht -ms-word-break: break-word (anstelle von break-all) sein? Für mich brach -ms-word-break: break-all die Wörter einfach irgendwo im Wort und -ms-hyphens:auto; hatte keine Auswirkung.
Dies muss aktualisiert werden. Firefox spielt nicht gut mit
hyphens: autoundword-break: break-allzusammen. Ich musste eine@supportsRegel verwenden, damit die Silbentrennung in FF 3x+ angezeigt wird.Micah,
Ich hatte ähnliche Probleme mit Firefox, konnte sie aber lösen. Sie können meine Frage auf Stackoverflow sehen, was los ist: http://stackoverflow.com/q/28976543/825757
Hallo Micah, danke dafür!
Funktioniert bei mir nicht. Für FF 3x+ verwende ich das
Eine Option ist, weiche Bindestriche in den Text an Stellen einzufügen, an denen er umgebrochen werden könnte.
Silbentrennung auf Webseiten ist unnötig und hässlich, besonders wenn man bedenkt, dass vollständiger Blocksatz nicht verwendet werden sollte.
In Bezug auf responsives Design wäre es eine ziemlich gute Funktion, lang geschriebene Wörter auch auf kleinen Displays in lesbarer Größe anzuzeigen. Da es aber immer noch eine erhebliche Verzögerung bei der Browserunterstützung gibt, ist sie meiner Meinung nach noch nicht wirklich nutzbar… leider…
Versuchen Sie, sich mit Deutsch auf einem 320 Pixel breiten (iPhone 5) Display auseinanderzusetzen.
Ich habe kürzlich eine Recherche durchgeführt[1] und festgestellt, dass die Kombination von
word-break: break-all;mithyphens: auto;in Firefox nicht wie erwartet funktioniert, da Wörter nicht mehr getrennt werden. Stattdessen habe ich festgestellt, dass manoverflow-wrap: break-wordverwenden kann, was in Firefox und auch in Opera Mini, wo word-break nicht unterstützt wird, gut funktioniert.[1] https://justmarkup.com/log/2015/07/31/dealing-with-long-words-in-css/
@Effeilo Danke, das hat bei mir in FF 41 und FF 44 funktioniert.
@Micah Ich habe gerade Ihre Lösung in FF 41 getestet und sie funktioniert nicht.
Ich muss mich korrigieren.
@Micah Ihre Lösung funktioniert nicht in MS Edge!
Ich habe gerade die Lösung von @Michael getestet, und sie funktioniert in allen Browsern (Chrome, Safari, Firefox, Edge, IE9+). Danke fürs Teilen.
Nachdem ich diesen Thread gelesen und verschiedene Spezifikationen geprüft habe, habe ich Folgendes entwickelt, um die Silbentrennung zu **vermeiden**:
NB: Ich verwende „manual“-Werte, da dies am häufigsten in Titeln mit größeren Schriftarten vorkommt. Redakteuren die Möglichkeit zu geben, einen weichen Bindestrich einzufügen, scheint sinnvoll. Die Overflow-Ellipsen habe ich als Fallback hinzugefügt (aber sie sind nicht getestet). Was denken Sie?
Klärung:
text-overflow: ellipsis;ist als Fallback gedacht, wenn das *letzte Wort* nicht passt. Offensichtlich hilft es nicht weiter oben im Block.Der Artikel unter dem Link http://blog.kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ ist eine französische Übersetzung von MDN. Nur zur Info.
Bitte stimmen Sie für dieses Chromium-Problem und kommentieren Sie es, wenn Sie crossbrowser
hyphens:autoverwenden möchten.https://bugs.chromium.org/p/chromium/issues/detail?id=47083
Der Ausschnitt aus dem Artikel sollte aktualisiert werden, es gibt keine Gründe, zu deklarieren
und mit
zu verwenden, wird einfach an zufälliger Stelle ein Wort umbrochen, um in eine neue Zeile zu gehen, wobei die Silbentrennung, wenn unterstützt, vermieden wird.
Danke Sara für den Artikel. Ich habe versucht, einige Ihrer Empfehlungen zu verwenden, aber alle scheitern auf die eine oder andere Weise.
Meiner Meinung nach ist Silbentrennung noch weit davon entfernt, praktisch zu sein. Der beste Ansatz ist, Text zu blockformatieren und auf das Beste zu hoffen. In Tabellen verwende ich um lange Wörter zu trennen, sonst ist das Ergebnis auf Tablets und Smartphones eine Katastrophe. Kurz gesagt, es sei denn, alle Browser-Gurus einigen sich auf Standardregeln, ist das alles nur Zeitverschwendung und viel verschwendete Mühe von Idioten, wie uns, die versuchen, perfekte Webseiten zu erstellen.
Ja, ja, wir wissen, dass sie die Idioten sind, nicht wir.
Im Allgemeinen ist die Eigenschaft
hypens: autoeine, die man vermeiden sollte.Nach dem Upgrade auf Chrome 55.0.2883.95 verursachte diese Eigenschaft ernsthafte Probleme mit tabellarischen Daten auf meiner Website:
tabellarische Daten, die in benachbarte Spalten überlappen,
willkürliche Brüche,
und das Versagen des Browsers, die Spaltengröße an die breiteste/größte Zelle anzupassen.
Je mehr ich darüber nachdenke, desto weniger sehe ich einen wirklichen Nutzen für diese Eigenschaft...
Es ist nur Chrome, das kaputt ist, nicht die anderen.
Gehen Sie zu https://bugs.chromium.org/p/chromium/issues/detail?id=47083 und stimmen Sie für diese Funktionsanfrage!
FYI, Chrome unterstützt die Eigenschaft hyphens seit November 2016. https://www.chromestatus.com/feature/5642121184804864
Es ist schon erstaunlich, dass Chrome nach so vielen Jahren immer noch auf die Verwendung eines browserspezifischen Präfixes angewiesen ist! Ich frage mich, woran es liegt.
Nun, das Präfix funktioniert, also beschwere ich mich nicht.
Sieht so aus, als wäre hyphenate-resources aus dem Standard entfernt worden.
Sieht so aus, als ob Chrome 88 endlich aufholen könnte! :)