Ich möchte -
von Fall zu Fall einen Zeilenumbruch nach einem Bindestrich verhindern , der mit allen Browsern kompatibel ist.
Beispiel:
Ich habe diesen Text: 3-3/8"
Was in HTML ist das: 3-3/8”
Das Problem ist, dass am Ende einer Zeile aufgrund des Bindestrichs die nächste Zeile unterbrochen und umgebrochen wird, anstatt sie wie ein vollständiges Wort zu behandeln ...
3-
3/8"
Ich habe versucht, das Zeichen "Null Breite ohne Unterbrechung" 
einzufügen , ohne Glück ...
3-3/8”
Ich sehe dies in Safari und denke, dass es in allen Browsern gleich sein wird.
Das Folgende ist meine doctype
und Zeichencodierung ...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Kann ich verhindern, dass diese nach dem Bindestrich unterbrochen werden? Ich brauche keine Lösung, die für die gesamte Seite gilt ... nur etwas, das ich nach Bedarf einfügen kann, wie ein "Null-Breite-No-Break-Zeichen", außer einem, das funktioniert.
Hier ist eine Demo. Machen Sie den Rahmen einfach schmaler, bis die Linie am Bindestrich bricht.
‑
ist ein nicht brechender Bindestrich.3-3/8″
oder3-3/8″
. Zitate sind keine Primzahlen. Wenn Sie es in reinem ASCII möchten, verwenden Sie stattdessen gerade doppelte Anführungszeichen ("
). Wenn es als guter, lesbarer Text dargestellt werden soll, verwenden Sie vorzugsweise3<span style="font-variant: diagonal-fractions">3/8</style>″
"3⅜"Antworten:
Versuchen Sie es mit dem nicht unterbrechenden Bindestrich
‑
. Ich habe den Bindestrich durch diesen Charakter in Ihrer jsfiddle ersetzt, den Rahmen so klein wie möglich verkleinert, und die Linie teilt sich dort nicht mehr.quelle

. Mir ist einfach nie in den Sinn gekommen, dass es einen eigenständigen Bindestrich gibt, der nicht kaputt geht.Sie können den entsprechenden Text auch mit umbrechen
quelle
‑
) in bestimmten Browsern möglicherweise etwas länger als ein normaler Bindestrich ist, war für mich trivial.IE8 / 9 macht den in CanSpices Antwort erwähnten nicht unterbrechenden Bindestrich länger als einen typischen Bindestrich. Es ist die Länge eines Bindestrichs anstelle eines typischen Bindestrichs. Dieser Anzeigeunterschied war für mich ein Deal Breaker.
Da ich die von Deb angegebene CSS-Antwort nicht verwenden konnte, entschied ich mich stattdessen für die Verwendung von No-Break-Tags.
Außerdem habe ich ein bestimmtes Szenario gefunden, bei dem IE8 / 9 in einem Bindestrich unterbrochen wurde.
IE macht es so.
Der folgende Code gibt das oben abgebildete Problem wieder. Ich musste ein Meta-Tag verwenden, um das Rendern in IE9 zu erzwingen, da IE10 das Problem behoben hat. Keine Geige, da es keine Meta-Tags unterstützt.
quelle
nobr
ist die browserübergreifendste Methode und funktioniert unabhängig von Schriftarten und CSS. Dasnobr
Element ist nicht in HTML-Spezifikationen definiert, dies sollte jedoch nur als Formalität betrachtet werden. Wenn Sie jedoch nach HTML-Spezifikationen schreiben müssen , ist Debs Antwort mit CSS die beste Option.nobr
Tag nicht dem Standard entspricht und jederzeit beschädigt werden kann. In der MDN-Dokumentation wird nicht empfohlen, dieses Tag zu verwenden: developer.mozilla.org/en-US/docs/Web/HTML/Element/nobrSie können dies auch "auf Joiner-Art" tun, indem Sie " Word Joiner " einfügen
U+2060
" .Wenn dies
Accept-Charset
zulässig ist, kann das Unicode-Zeichen selbst direkt eingefügt werden in die HTML-Ausgabe .Andernfalls kann die Entitätscodierung verwendet werden. ZB um den Text zu verbinden
red-brown
, zu verwenden:oder (Dezimaläquivalent):
. Ein weiteres verwendbares Zeichen ist "
U+FEFF
Zero Width No-Break Space " [ 1] :und (Dezimaläquivalent):
[1] : Beachten Sie, dass diese Methode zwar in gängigen Browsern wie Chrome funktioniert, jedoch seit Unicode 3.2 veraltet ist .
Vergleich von "The Joiner Way" mit "
U+2011
Non-Breaking Hyphen ":Das Wort Joiner kann für alle anderen Zeichen verwendet werden, nicht nur für Bindestriche.
Bei Verwendung des Word Joiners wird der Text von den meisten Renderern identisch gerastert . In Chrome, FireFox, IE und Opera wird das Rendern normaler Bindestriche ausgeführt, z.
ist identisch mit dem Rendern normaler Bindestriche (mit U + 2060 Word Joiner), z.
während sich die obigen zwei Darstellungen von der Darstellung von " Non-Breaking Hyphen " unterscheiden, z.
. (Das Ausmaß des Unterschieds ist
arial
browser- und schriftabhängig . Wenn Sie beispielsweise eine Schriftartdeklaration von " " verwenden, weisen Firefox und IE11 relativ große Unterschiede auf, während Chrome und Opera kleinere Abweichungen aufweisen.)Vergleich von "The Joiner Way" mit
<span class=c1></span>
(CSS.c1 {white-space:nowrap;}
) und<nobr></nobr>
:Das Wort Joiner kann für Situationen verwendet werden, in denen die Verwendung von HTML-Tags eingeschränkt ist, z. B. Formen von Websites und Foren.
In Bezug auf Präsentation und Inhalt wird die Mehrheit das Wort Joiner im Vergleich zu Tags als näher am Inhalt betrachten.
• Wie unter Windows 8.1 Core 64-Bit getestet mit:
• IE 11.0.9600.18205
• Firefox 43.0.4
• Chrome 48.0.2564.109 (offizieller Build) m (32-Bit)
• Opera 35.0.2066.92
quelle
bingo-⁠bongo

Spät zur Party, aber ich denke, das ist eigentlich das eleganteste. Verwenden Sie das Unicode-Zeichen WORD JOINER & # 8288 ; auf jeder Seite Ihres Bindestrichs oder Strichs oder eines beliebigen Zeichens.
Also, wie so:
Dadurch wird das Symbol an beiden Enden mit seinen Nachbarn verbunden (ohne ein Leerzeichen hinzuzufügen) und ein Zeilenumbruch verhindert.
quelle