Temos um ckeditor em nosso CMS. Nossos usuários finais irão inserir alguns artigos longos por meio desse ckeditor. Precisamos de uma maneira de evitar quebras de linha em hífens nesses artigos.
Existe alguma maneira de evitar quebra de linha em hífens em todos os navegadores?
ou o ckeditor tem uma opção para evitar isso?
Respostas:
Receio que não haja maneira mais simples de fazer isso de forma confiável do que dividir o texto em “palavras” (sequências de caracteres não-espaços em branco separados por espaços em branco) e envolver cada “palavra” que contém um hífen dentro da
nobr
marcação. Portanto, dados de entrada comobla bla foo-bar bla bla
seriam transformadosbla bla <nobr>foo-bar</nobr> bla bla
.Você pode até considerar a inserção de
nobr
marcação sempre que a “palavra” contiver qualquer coisa, exceto letras e dígitos. A razão é que alguns navegadores podem até quebrar strings como “2/3” ou “f (0)” (veja minha página sobre estranhezas de quebra de linha em navegadores ).fonte
nobr
tag não é padrão e fortemente desencorajada pelo W3C. Consulte w3.org/TR/html5/obsolete.html#non-conforming-featuresnobr
marcação funciona em todos os navegadores, funciona mesmo quando as folhas de estilo estão desabilitadas e funciona independentemente do suporte a caracteres especiais. Existe um problema real com isso?Você pode usar o
‑
qual é um Unicode NON-BREAKING HYPHEN (U + 2011).HTML:
‑
ou‑
Consulte também: http://en.wikipedia.org/wiki/Hyphen#In_computing
fonte
-
por‑
.nobr
do que colocar etiquetas em todos os lugares, não funciona muito bem na prática. O IE o exibe como um traço, o Safari adiciona mais espaço ao redor do que um traço normal e a maioria dos editores de texto o exibe como um ponto de interrogação ou caixa ou outro caractere sem sentido.white-space: nowrap
como sugerido por derekerdmann. Btw no FF / Win7 o traço tímido parece ser convertido em um traço regular quando copiado e colado fora do Firefox, mesmo se o aplicativo de destino for compatível com Unicode.Uma solução poderia ser usar uma
span
tag extra e awhite-space
propriedade CSS. Basta definir uma classe como esta:Em seguida, adicione um intervalo com essa classe ao redor do texto hifenizado.
Essa abordagem deve funcionar bem em todos os navegadores - as implementações com erros listadas aqui são para outros valores da
white-space
propriedade: http://reference.sitepoint.com/css/white-space#compatibilitysectionfonte
white-space: nowrap
a todo o contêiner. Caso contrário, deixe para lá; primeiro, não há razão para evitar quebras de linha com hífens para conteúdo geral e, segundo, não há como fazer com que o que você está procurando aconteça automaticamente, a menos que esteja disposto a hackear o CKEditor.<nobr>
é muito mais claro.Você não consegue fazer isso sem editar cada instância HTML. Consequentemente, escrevi alguns JS para substituí-los:
jQuery:
Vanilla JS:
fonte
Use o caractere de junção de palavra (
⁠
) ao redor do hífen. Também funciona no IE.https://en.wikipedia.org/wiki/Word_joiner
consertar hifens específicos ...
ou tudo ...
fonte
Experimente este CSS:
fonte