Wir haben einen Redakteur auf unserem CMS. Unsere Endbenutzer werden über diesen ckeditor einige lange Artikel eingeben. Wir brauchen einen Weg, um Zeilenumbrüche bei Bindestrichen in diesen Artikeln zu verhindern.
Gibt es überhaupt eine Möglichkeit, Zeilenumbrüche bei Bindestrichen in allen Browsern zu verhindern?
oder hat ckeditor eine option, um das zu verhindern?
Antworten:
Ich fürchte, es gibt keinen einfacheren Weg, dies zuverlässig zu tun, als den Text in „Wörter“ (Sequenzen von Nicht-Leerzeichen, die durch Leerzeichen getrennt sind) aufzuteilen und jedes „Wort“, das einen Bindestrich im
nobr
Markup enthält, zu verpacken . Also würden Eingabedaten wiebla bla foo-bar bla bla
auf gedrehtbla bla <nobr>foo-bar</nobr> bla bla
.Sie können sogar Markups einfügen,
nobr
wenn das „Wort“ etwas anderes als Buchstaben und Ziffern enthält. Der Grund dafür ist, dass einige Browser möglicherweise sogar Zeichenfolgen wie "2/3" oder "f (0)" unterbrechen (siehe meine Seite zu den Besonderheiten des Zeilenumbruchs in Browsern ).quelle
nobr
Tag ist kein Standard und wird vom W3C dringend empfohlen. Siehe w3.org/TR/html5/obsolete.html#non-conforming-featuresnobr
funktioniert das Markup in allen Browsern, auch bei deaktivierten Stylesheets und unabhängig von der Unterstützung von Sonderzeichen. Gibt es ein echtes Problem damit?Sie können
‑
einen Unicode NON-BREAKING HYPHEN (U + 2011) verwenden.HTML:
‑
oder‑
Siehe auch: http://en.wikipedia.org/wiki/Hyphen#In_computing
quelle
-
mit‑
.nobr
Tags überall, funktioniert es in der Praxis nicht sehr gut. Der IE zeigt es als Bindestrich an, Safari fügt mehr Platz um es herum als ein normaler Bindestrich hinzu, und die meisten Texteditoren zeigen es als Fragezeichen, Kästchen oder anderes bedeutungsloses Zeichen an.white-space: nowrap
wie von derekerdmann vorgeschlagen. Übrigens scheint unter FF / Win7 der schüchterne Bindestrich beim Kopieren und Einfügen außerhalb von Firefox in einen normalen Bindestrich umgewandelt zu werden, selbst wenn die Zielanwendung Unicode-fähig ist.Eine Lösung könnte darin bestehen, ein zusätzliches
span
Tag und diewhite-space
CSS-Eigenschaft zu verwenden. Definieren Sie einfach eine Klasse wie diese:Fügen Sie dann mit dieser Klasse einen Bereich um Ihren getrennten Text hinzu.
Dieser Ansatz sollte in allen Browsern einwandfrei funktionieren. Die hier aufgeführten fehlerhaften Implementierungen gelten für andere Werte der
white-space
Eigenschaft: http://reference.sitepoint.com/css/white-space#compatibilitysectionquelle
white-space: nowrap
für den gesamten Container. Ansonsten lass es einfach los; Erstens gibt es keinen Grund, Zeilenumbrüche mit Bindestrichen für allgemeine Inhalte zu verhindern, und zweitens gibt es keine Möglichkeit, automatisch das zu erreichen, wonach Sie suchen, es sei denn, Sie sind bereit, sich bei CKEditor abzuhacken.<nobr>
ist viel klarer.Sie können dies nicht tun, ohne jede HTML-Instanz zu bearbeiten. Folglich habe ich einige JS geschrieben, um sie zu ersetzen:
jQuery:
Vanilla JS:
quelle
Verwenden Sie das Wort Joiner- Zeichen (
⁠
) um den Bindestrich. Es funktioniert auch im IE.https://en.wikipedia.org/wiki/Word_joiner
bestimmte Bindestriche korrigieren ...
oder alles ...
quelle
Versuchen Sie dieses CSS:
quelle