Ambos significam espaço, mas há alguma diferença?
146
Um é o espaço sem quebra e o outro é um espaço regular. Um espaço sem quebra significa que a linha não deve ser quebrada nesse ponto, assim como não seria quebrada no meio de uma palavra.
Além disso, como Svend ressalta em seu comentário, os espaços não quebráveis não são destruídos.
&hairsp      
que você pode ver e experimentar em [ jsfiddle.net/medmunds/4crt3c9j/]A entidade
produz um espaço sem quebra, que é usado quando você não deseja uma quebra de linha automática nessa posição. O espaço regular possui o código de caractere 32, enquanto o espaço sem quebra possui o código de caractere 160.Por exemplo, quando você exibe números com espaço como separador de milhares: 1 234 567, usa espaços sem quebra para que o número não possa ser dividido em linhas separadas. Se você exibir a moeda e houver um espaço entre o valor e a moeda: 42 SEK, use um espaço sem quebra para não obter o valor em uma linha e a moeda na seguinte.
fonte
Além das outras respostas aqui, os espaços sem quebra não serão "recolhidos", como os espaços regulares. Por exemplo, ambos
e
renderizará o mesmo em qualquer navegador, enquanto
manterá os espaços quando renderizados.
fonte
Não é uma resposta tanto quanto exemplos ...
Exemplo 1:
Exemplo 2:
E link para o violino .
fonte
Você pode ver um exemplo de trabalho aqui:
http://codepen.io/anon/pen/GJzBxo
e
http://codepen.io/anon/pen/LVqBQo
Mesma div, mesmo texto, diferentes "espaços"
vs
fonte
edit
sua postagem deve incluir a saída resultante do código em sua resposta ou adicionar a própria versão incorporada do codepen da SO, para que o visitante possa executar o código e ver o resultado sem sair para uma página externa. O motivo da política independente é que, se o link se tornar inacessível, a resposta se tornará inútil. Além disso, é um UX ruim exigir que os usuários saiam, apenas para obter uma resposta.Vários caracteres de espaço em branco normal (espaço, tabulador e quebra de linha) são tratados como um único caractere de espaço em branco :
assim
é exibido como
Mas o espaço sem interrupção é sempre exibido. assim
é exibido como
fonte
Como já mencionado, você não receberá uma quebra de linha onde houver um "espaço sem interrupção".
Também tenha cuidado, que elementos contendo apenas "" podem aparecer incorretamente, onde & nbsp; vai funcionar. Em ie 6, pelo menos (tanto quanto me lembro, o IE7 tem o mesmo problema), se você tiver um elemento de tabela vazio, ele não aplicará estilo, por exemplo, bordas, ao elemento, se não houver conteúdo ou apenas branco espaço. Portanto, o seguinte não será renderizado com bordas:
Enquanto as fronteiras aparecerão neste exemplo:
Hmm - tinha que colocar um espaço fictício para fazê-lo renderizar corretamente aqui
fonte
O primeiro não é tratado como espaço em branco pelo analisador de HTML, o segundo é. Como resultado, não é garantido que "" seja exibido dentro de determinadas marcações HTML, enquanto o espaço não quebrável sempre será exibido.
fonte
deve ser tratado como um espaço em branco.
deve ser tratado como dois espaços em branco'' pode ser tratado como um espaço em branco não interessante
'' + '' pode ser tratado como um único ''
fonte
é empilhável, o que significa que você pode criar vários espaços todos juntos.HTML analisará apenas um espaço '' e soltará o resto ...
Se você quiser cinco espaços, coloque 5 x
fonte
@Zoidberg está certo, exemplo:
não exibirá espaço entre a marcação do cabeçalho, com
vai fazer espaço :)
fonte
Quando houver quebras de linha, a linha não será interrompida quando você usar um $ bnsp; porque é um 'espaço sem quebra'. Isso pode ser importante se você tiver determinados nomes de produtos ou outros, que sempre devem ser escritos juntos.
Pode ser interessante se você (precisar) usar um espaço em branco como delimitador em números, como 12344567, exibido 12 344 567 na França. Sem a linha iria quebrar no meio do número, muito feio. Teste: 12 344 567
fonte
TLDR; Além da resposta aceita; Um está implícito e outro explícito.
Quando o HTML que você escreveu ou gerou por um aplicativo / biblioteca / estrutura é lido pelo seu navegador, é melhor interpretar o significado do seu HTML (que pode variar de navegador para navegador). Ao usar os códigos de entidade HTML, você está sendo mais específico ao navegador. Você está explicitamente dizendo que deseja exibir um caractere para o usuário (e não que você esteja apenas espaçando seu HTML para facilitar a legibilidade para o desenvolvedor, por exemplo).
Para ser mais concreto, se o HTML de saída fosse:
O navegador renderizaria apenas um espaço entre todas essas palavras (mesmo as que foram recuadas para melhor legibilidade do desenvolvedor.
Se, no entanto, você colocar a mesma coisa e apenas alterar a
<p>
tag para:Em seguida, renderizaria os espaços, como você o instruiu mais explicitamente. Há um histórico de uso desses espaços para estilizar. Esse uso foi um pouco diminuído à medida que o CSS amadureceu. No entanto, ainda existem usos válidos para muitas das entidades de caracteres HTML: evitando interpretação inesperada / não intencional (por exemplo, se você deseja exibir o código). O w3 tem uma ótima página para mostrar os outros códigos de caracteres .
fonte
<p>Hello There</p>
OU<p>Hello There</p>
(Se a quebra não for um problema, você poderá salvar alguns bits usando o espaço vazio regular antes e depois de cada
).