Estou procurando evitar uma quebra de linha após um hífen, -
caso a caso, compatível com todos os navegadores.
Exemplo:
Eu tenho este texto: 3-3/8"
que em HTML é este: 3-3/8”
O problema é que, perto do final de uma linha, por causa do hífen, ele quebra e passa para a próxima linha, em vez de tratá-la como uma palavra completa ...
3-
3/8"
Eu tentei inserir o "caractere de largura zero sem interrupção", 
sem sorte ...
3-3/8”
Estou vendo isso no Safari e pensando que será o mesmo em todos os navegadores.
A seguir, minha doctype
codificação e de caracteres ...
<!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" />
Existe alguma maneira de impedir que eles quebrem a linha após o hífen? Não preciso de nenhuma solução que se aplique a toda a página ... apenas algo que eu possa inserir conforme necessário, como um "caractere de largura zero sem interrupção", exceto um que funcione.
Aqui está uma demonstração. Basta tornar o quadro mais estreito até que a linha quebre no hífen.
‑
é um hífen ininterrupto.3-3/8″
ou3-3/8″
. Citações não são números primos. Se você quiser em ASCII puro, use aspas duplas retas ("
). De preferência, se for apresentado como um texto legível e bom, você usaria3<span style="font-variant: diagonal-fractions">3/8</style>″
, exibindo '3″ ″' 'Respostas:
Tente usar o hífen ininterrupto
‑
. Substituí o traço por esse caractere no seu jsfiddle, reduzi o quadro o mínimo possível e a linha não se divide mais.fonte

. Apenas nunca me ocorreu que havia um hífen autônomo que não se quebra.Você também pode agrupar o texto relevante com
fonte
‑
) poder renderizar um pouco mais do que um hífen comum em alguns navegadores foi trivial para mim.O IE8 / 9 processa o hífen ininterrupto mencionado na resposta do CanSpice por mais tempo que um hífen típico. É o comprimento de um traço em vez de um hífen típico. Essa diferença de exibição foi um diferencial para mim.
Como não pude usar a resposta CSS especificada por Deb, optei por não usar tags de quebra.
Além disso, encontrei um cenário específico que causou a quebra do IE8 / 9 em um hífen.
IE torna assim.
O código a seguir reproduz o problema mostrado acima. Eu tive que usar uma metatag para forçar a renderização no IE9, pois o IE10 corrigiu o problema. Não há problema, porque não suporta metatags.
fonte
nobr
é a maneira mais cross-browser e funciona independentemente de fontes e CSS. Onobr
elemento não está definido nas especificações HTML, mas isso deve ser considerado apenas uma formalidade. Mas se você deve escrever por especificações HTML, a resposta de Deb, usando CSS, é a melhor opção.nobr
tag não é padrão e pode quebrar a qualquer momento. A documentação do MDN não recomenda o uso desta tag: developer.mozilla.org/pt-BR/docs/Web/HTML/Element/nobrVocê também pode fazer isso "da maneira do marceneiro", inserindo "
U+2060
Word Joiner ".Se
Accept-Charset
permitir, o próprio caractere unicode pode ser inserido diretamente na saída HTML.Caso contrário, isso pode ser feito usando a codificação de entidade. Por exemplo, para ingressar no texto
red-brown
, use:ou (equivalente decimal):
. Outro caractere utilizável é "
U+FEFF
Espaço sem quebra de largura zero " [ 1] :e (equivalente decimal):
[1] : observe que, embora esse método ainda funcione nos principais navegadores como o Chrome, foi preterido desde o Unicode 3.2 .
Comparação de "the joiner way" com "
U+2011
Non-breaking Hyphen ":A palavra marceneiro pode ser usada para todos os outros caracteres, não apenas para hífens.
Ao usar a palavra marceneiro, a maioria dos renderizadores rasteriza o texto de forma idêntica . No Chrome, FireFox, IE e Opera, a renderização de hífens normais, por exemplo:
é idêntico à renderização de hífens normais (com U + 2060 Word Joiner), por exemplo:
enquanto as duas renderizações acima diferem da renderização de " Hífen sem quebra" ", por exemplo:
. (A extensão da diferença depende do navegador e da fonte. Por exemplo, ao usar uma declaração de fonte de "
arial
", o Firefox e o IE11 mostram variações relativamente grandes, enquanto o Chrome e o Opera mostram variações menores.)Comparação de "the joiner way" com
<span class=c1></span>
(CSS.c1 {white-space:nowrap;}
) e<nobr></nobr>
:A palavra marceneiro pode ser usada para situações em que o uso de tags HTML é restrito, por exemplo, formas de sites e fóruns.
No espectro da apresentação e do conteúdo , a maioria considerará a palavra marceneiro mais próxima do conteúdo, quando comparada às tags.
• Conforme testado no Windows 8.1 Core de 64 bits usando:
• IE 11.0.9600.18205
• Firefox 43.0.4
• Chrome 48.0.2564.109 (versão oficial) m (32 bits)
• Opera 35.0.2066.92
fonte
bingo-⁠bongo

Tarde da festa, mas acho que isso é realmente o mais elegante. Use o caractere Unicode do WORD JOINER & # 8288 ; nos dois lados do hífen, traço ou qualquer caractere.
Então, assim:
Isso unirá o símbolo nas duas extremidades aos vizinhos (sem adicionar espaço) e evitará a quebra de linha.
fonte