retorno de carro hace que un espacio visual en Internet Explorer 8
-
21-09-2019 - |
Pregunta
Un retorno de carro en mi código html provoca un espacio visual en el html dictada en Explorer 8. Supongo que esto afectará a otras versiones también.
Por ejemplo:
<span>
(111)
222-
3333
444444
</span>
tiene el siguiente aspecto:
(111) 222- 3333 444444
No debe haber sólo un 1 espacio después del primer soporte, no hay espacio después del guión y sólo 1 espacio después del último 3. Me gusta el carro vuelve a la legibilidad del código, es posible ir a continuación, mantener y aún así obtener el código HTML para hacer correctamente en IE?
Aquí está la información de tipo de documento:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Editar:
En realidad estoy haciendo esto en una aplicación ASP.NET MVC 2, y el formato de plantilla ASPX es bastante detallado y por eso me he tratado de separarlo en varias líneas:
<span>
(<%=((Model == null || Model.AreaCode == null) ? "" : Model.AreaCode).PadRight(3)%>)
<%=((Model == null || Model.Prefix == null) ? "" : Model.Prefix).PadRight(3)%>-
<%=((Model == null || Model.Suffix == null) ? "" : Model.Suffix).PadRight(4)%>
<%=(Model == null || Model.Extension == null) ? "" : Model.Extension%>
</span>
Solución
Este es un escenario en el que las funciones de tipo sprintf
realmente brillan. En el mundo .NET éstos son manejados por String.Format
. Aquí está el MSDN la documentación y usted podría volver a escribir el código de algo como esto:
<span>
<%= String.Format("({0:###}) {1:###}-{2:####} {3}", Model.AreaCode, Model.Prefix, Model.Suffix, Model.Extension); %>
</span>
Estoy un poco oxidado en la sintaxis de formato de cadena .NET, así que no hay garantías de que el fragmento de código. Aquí hay otro enlace:
Otros consejos
en HTML, el carácter de avance (U + 000C) se trata como un espacio en blanco, en XHTML
http://www.w3.org/TR/xhtml1/#C_15
http://www.w3.org/TR/xhtml1/#uaconf (punto 9):
El espacio en blanco se maneja de acuerdo con las siguientes reglas. El seguimiento personajes se definen en [XML] blanco los caracteres de espacio:
SPACE () TABULACION HORIZONTAL () Retorno de carro ( ) LINEA DE ALIMENTACIÓN ( ) El procesador XML normaliza extremo de línea diferentes sistemas códigos en una sola RENGLÓN carácter, que se pasa a la aplicación.
El agente de usuario debe utilizar la definición de CSS para el procesamiento de los espacios en blanco personajes [CSS2]. Tenga en cuenta que el CSS2 recomendación no lo hace de forma explícita abordar la cuestión de los espacios en blanco en el manejo de conjuntos de caracteres no latinos. Este problema se solucionará en un futuro versión de CSS, momento en el que este referencia se actualizará.
No sólo en IE8. Lo he probado con el cromo y le da el mismo resultado. Lo primero que necesita para eliminar el espacio entre elemento en sí. y de hecho hay 2 espacios entre (111) 222 3333 y 44444. Por lo tanto, parece que cada retorno de carro está tomando un espacio en blanco.
Esto es perfectamente aceptable en cuenta este código HTML ...
<html>
<head>
</head>
<body>
This is some static text
with carriage return
<span>
(111) 222- 3333 444444
</span>
</body>
</html>
la salida sería ...
Este es un texto estático con retorno de carro (111) 222- 3333 444444
Reloj para el espacio entre el texto y con en texto estático. Por lo tanto la traducción de retorno de carro al espacio se parece como una regla general para HTML.
A de nueva línea es un espacio.
Si realmente quiere esas cosas en líneas separadas, podría utilizar los comentarios HTML:
<span><!--
-->(111) <!--
-->222-<!--
-->3333 <!--
-->444444<!--
--></span>
A pesar de que no es demasiado grande para facilitar la lectura tampoco. Personalmente no veo lo que es ilegible ponerlo todo en una línea. Se podría hacer:
<span style="white-space:nowrap">(111) 222-3333 444444</span>
si se siente los
s están haciendo que sea ilegible.