Mamy ckeditor w naszym CMS. Nasi użytkownicy końcowi będą wprowadzać długie artykuły za pośrednictwem tego ckeditor. Potrzebujemy sposobu, aby zapobiec łamaniu linii w łącznikach w tych artykułach.
Czy w ogóle istnieje możliwość zapobiegania łamaniu linii w łącznikach we wszystkich przeglądarkach?
czy ckeditor ma opcję, aby temu zapobiec?
Odpowiedzi:
Obawiam się, że nie ma prostszego sposobu na zrobienie tego niezawodnie niż podzielenie tekstu na „słowa” (sekwencje znaków niebędących białymi znakami oddzielone spacjami) i zawijanie każdego „słowa”, które zawiera łącznik wewnątrz
nobr
znacznika. Więc dane wejściowe, takie jakbla bla foo-bar bla bla
zostałyby zwróconebla bla <nobr>foo-bar</nobr> bla bla
.Możesz nawet rozważyć wstawienie
nobr
znaczników, ilekroć „słowo” zawiera wszystko oprócz liter i cyfr. Powodem jest to, że niektóre przeglądarki mogą nawet łamać ciągi znaków, takie jak „2/3” lub „f (0)” (zobacz moją stronę dotyczącą dziwnych przypadków łamania linii w przeglądarkach ).źródło
nobr
Tag nie jest standardem, i zdecydowanie odradzane przez W3C. Zobacz w3.org/TR/html5/obsolete.html#non-conforming-featuresnobr
znaczniki działają we wszystkich przeglądarkach, działają nawet wtedy, gdy arkusze stylów są wyłączone i działają niezależnie od obsługi znaków specjalnych. Czy jest z tym prawdziwy problem?Możesz użyć
‑
ŁĄCZNIKA NIEŁAMANIAJĄCEGO Unicode (U + 2011).HTML:
‑
lub‑
Zobacz także: http://en.wikipedia.org/wiki/Hyphen#In_computing
źródło
-
z‑
.nobr
na całym miejscu, w praktyce nie działa zbyt dobrze. IE wyświetla to jako półpauzę, Safari dodaje więcej miejsca wokół niego niż zwykła myślnik, a większość edytorów tekstu wyświetla go jako znak zapytania, ramkę lub inny bezsensowny znak.white-space: nowrap
zgodnie z sugestią derekerdmanna. Przy okazji na FF / Win7 nieśmiała myślnik wydaje się być konwertowana na zwykłą myślnik podczas kopiowania i wklejania poza Firefox, nawet jeśli aplikacja docelowa obsługuje Unicode.Jednym z rozwiązań mogłoby być użycie dodatkowego
span
tagu iwhite-space
właściwości CSS. Po prostu zdefiniuj taką klasę:A następnie dodaj rozpiętość z tą klasą wokół dzielonego tekstu.
To podejście powinno działać dobrze we wszystkich przeglądarkach - wymienione tutaj błędne implementacje dotyczą innych wartości
white-space
właściwości: http://reference.sitepoint.com/css/white-space#compatibilitysectionźródło
white-space: nowrap
do całego kontenera. W przeciwnym razie po prostu odpuść; po pierwsze, nie ma powodu, aby zapobiegać przerywaniu wierszy łącznikami w przypadku ogólnej treści, a po drugie, nie ma możliwości, aby to, czego szukasz, działo się automatycznie, chyba że chcesz zhakować CKEditor.<nobr>
jest znacznie jaśniejszy.Nie możesz tego zrobić bez edycji każdej instancji HTML. W konsekwencji napisałem trochę JS, aby je zastąpić:
jQuery:
Vanilla JS:
źródło
Użyj znaku łącznika słowa (
⁠
) wokół łącznika. Działa również w IE.https://en.wikipedia.org/wiki/Word_joiner
popraw określone łączniki ...
albo wszystko ...
źródło
Wypróbuj ten CSS:
źródło