Ambos significan espacio, pero ¿hay alguna diferencia?
146
Uno es un espacio sin interrupciones y el otro es un espacio regular. Un espacio sin saltos significa que la línea no debe ajustarse en ese punto, al igual que no se envolvería en medio de una palabra.
Además, como señala Svend en su comentario, los espacios que no se rompen no se colapsan.
&hairsp      
que puede ver y experimentar en [ jsfiddle.net/medmunds/4crt3c9j/]La entidad
produce un espacio sin interrupción, que se utiliza cuando no desea un salto de línea automático en esa posición. El espacio regular tiene el código de caracteres 32, mientras que el espacio sin interrupciones tiene el código de caracteres 160.Por ejemplo, cuando visualiza números con espacio como separador de miles: 1 234 567, entonces usa espacios sin división para que el número no se pueda dividir en líneas separadas. Si muestra la moneda y hay un espacio entre la cantidad y la moneda: 42 SEK, entonces usa un espacio sin interrupción para no obtener la cantidad en una línea y la moneda en la siguiente.
fuente
Además de las otras respuestas aquí, los espacios que no se rompen no se "colapsarán" como lo harán los espacios normales. Por ejemplo, ambos
y
hará lo mismo en cualquier navegador, mientras
mantendrá los espacios cuando se represente.
fuente
No es una respuesta tanto como ejemplos ...
Ejemplo 1:
Ejemplo # 2:
Y enlace al violín .
fuente
Puedes ver un ejemplo de trabajo aquí:
http://codepen.io/anon/pen/GJzBxo
y
http://codepen.io/anon/pen/LVqBQo
Mismo div, mismo texto, diferentes "espacios"
vs
fuente
edit
su publicación para incluir el resultado resultante del código en su respuesta, o para agregar la propia versión incrustada de codepen de SO, para que el visitante pueda ejecutar el código y ver el resultado sin salir a una página externa. La razón de la política autónoma es que si el enlace se vuelve inalcanzable, la respuesta se vuelve inútil. Además, es una mala experiencia de usuario exigir que los usuarios se vayan, solo para obtener una respuesta.Múltiples caracteres de espacio en blanco normales (espacio, tabulador y salto de línea) se tratan como un solo carácter de espacio en blanco :
Entonces
se muestra como
Pero el espacio sin interrupción siempre se muestra. Entonces
se muestra como
fuente
Como ya se mencionó, no recibirá un salto de línea donde haya un "espacio sin interrupción".
También tenga cuidado, que los elementos que contienen solo un "" pueden aparecer incorrectamente, donde & nbsp; trabajará. Por ejemplo, en 6 al menos (hasta donde recuerdo, IE7 tiene el mismo problema), si tiene un elemento de tabla vacío, no aplicará estilo, por ejemplo bordes, al elemento, si no hay contenido, o solo blanco espacio. Por lo tanto, lo siguiente no se representará con bordes:
Mientras que las fronteras se mostrarán en este ejemplo:
Hmm, tuve que poner un espacio ficticio para que se renderice correctamente aquí
fuente
El primero no es tratado como espacio en blanco por el analizador HTML, el segundo sí. Como resultado, no se garantiza que el "" aparezca dentro de cierto marcado HTML, mientras que el espacio no rompible siempre aparecerá.
fuente
debe manejarse como un espacio en blanco.
debe manejarse como dos espacios en blanco'' se puede manejar como un espacio en blanco no interesante
'' + '' se puede manejar como un solo ''
fuente
es apilable, lo que significa que puede crear múltiples espacios todos juntos.HTML solo analizará un espacio '' y descarta el resto ...
Si quieres cinco espacios, colocarías 5 x
fuente
@Zoidberg tiene razón, ejemplo:
no mostrará espacio entre el marcado del encabezado, con
hará espacio :)
fuente
Al tener saltos de línea, la línea no se romperá cuando use $ bnsp; porque es un "espacio sin interrupciones". Esto puede ser importante si tiene ciertos nombres de productos o similares, que siempre deben escribirse juntos.
Puede ser interesante si (tiene que) usar un espacio en blanco como delimitador en números, como 12344567, que se muestra 12 344 567 en Francia. Sin la línea se rompería en el medio del número, muy feo. Prueba: 12 344 567
fuente
TLDR; Además de la respuesta aceptada; Uno es implícito y el otro es explícito.
Cuando su navegador lea el HTML que ha escrito o generado por una aplicación / biblioteca / marco, lo mejor será interpretar lo que significaba su HTML (que puede variar de un navegador a otro). Cuando usa los códigos de entidad HTML, está siendo más específico para el navegador. Le está diciendo explícitamente que desea mostrar un carácter al usuario (y no que solo está espaciando su HTML para facilitar la legibilidad del desarrollador, por ejemplo).
Para ser más concreto, si el HTML de salida fuera:
El navegador solo representaría un espacio entre todas estas palabras (incluso las que se han sangrado para una mejor legibilidad del desarrollador.
Sin embargo, si pones lo mismo y solo cambiaste la
<p>
etiqueta a:Luego representaría los espacios, como lo ha indicado más explícitamente. Existe cierta historia del uso de estos espacios para el estilo. Este uso ha disminuido un poco a medida que CSS ha madurado. Sin embargo, todavía hay usos válidos para muchas de las entidades de caracteres HTML: evitar la interpretación inesperada / involuntaria (por ejemplo, si desea mostrar el código). El w3 tiene una gran página para mostrar los otros códigos de caracteres .
fuente
<p>Hello There</p>
O<p>Hello There</p>
(Si romper no es un problema, puede guardar algunos bits utilizando el espacio vacío Regular antes y después de cada
).