0

我的 html 代码中的回车会导致 Explorer 8 中呈现的 html 中出现视觉空间。我猜这也会影响其他版本。

例如:

<span>
(111)&nbsp;
222-
3333&nbsp;
444444
</span>

看起来像这样:

(111)  222- 3333  444444

第一个括号后应该只有 1 个空格,破折号后没有空格,最后 3 个后只有 1 个空格。我喜欢回车符以提高代码的可读性,是否可以继续保留并仍然让 html 在 IE 中正确呈现?

这是文档类型信息:

<!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">

编辑:
我实际上是在 ASP.NET MVC 2 应用程序中执行此操作,并且 aspx 模板标记非常冗长,这就是为什么我尝试将其分成多行的原因:

<span>
(<%=((Model == null || Model.AreaCode == null) ? "" : Model.AreaCode).PadRight(3)%>)&nbsp;
<%=((Model == null || Model.Prefix == null) ? "" : Model.Prefix).PadRight(3)%>-
<%=((Model == null || Model.Suffix == null) ? "" : Model.Suffix).PadRight(4)%>&nbsp;
<%=(Model == null || Model.Extension == null) ? "" : Model.Extension%>
</span>
4

4 回答 4

2

在 HTML 中,换页符 (U+000C) 被视为空格,在 XHTML 中

http://www.w3.org/TR/xhtml1/#C_15

还有http://www.w3.org/TR/xhtml1/#uaconf(第9点):

根据以下规则处理空白。[XML] 空白字符中定义了以下字符:

空格 ( ) 水平制表 ( ) 回车 ( ) 换行 ( ) XML 处理器将不同系统的行结束代码标准化为一个单独的换行字符,然后传递给应用程序。

用户代理必须使用 CSS 的定义来处理空白字符 [CSS2]。请注意,CSS2 建议并未明确解决非拉丁字符集中的空白处理问题。这将在未来版本的 CSS 中解决,届时将更新此参考。

于 2009-12-27T07:06:40.687 回答
1

不只是在 IE8 中。我已经用 chrome 对其进行了测试,它给出了相同的结果。首先,您需要从 <span> </span> 元素中删除它自己的空间。事实上,(111) 222 和 3333 44444 之间有 2 个空格。所以似乎每个回车符都占用一个空格。

考虑到这个 HTML,这完全没问题...

<html>
  <head>
  </head>
  <body>
    This is some static text
    with carriage return
    <span>
      (111)&nbsp;222- 3333&nbsp;444444
    </span>
  </body>
</html>

输出将是...

这是一些带回车的静态文本 (111) 222- 3333 444444

注意静态文本中文本和 with 之间的空间。因此,将回车翻译为空格似乎是 HTML 的一般规则。

于 2009-12-27T07:05:42.220 回答
1

sprintf这是类型函数真正闪耀的场景。在 .NET 世界中,这些由 .NET 处理String.Format。这是MSDN 文档,您可以像这样重写代码:

<span>
<%= String.Format("({0:###}) {1:###}-{2:####} {3}", Model.AreaCode, Model.Prefix, Model.Suffix, Model.Extension); %>
</span>

我对 .NET 字符串格式语法有点生疏,所以不能保证该代码片段。这是另一个链接:

http://blog.stevex.net/string-formatting-in-csharp/

于 2009-12-27T09:42:28.390 回答
0

换行符是一个空格。

如果你真的想把这些东西放在不同的行上,你可以使用 HTML 注释:

<span><!--
-->(111)&nbsp;<!--
-->222-<!--
-->3333&nbsp;<!--
-->444444<!--
--></span>

尽管这对于可读性来说也不是很好。就我个人而言,我看不出什么是不可读的。你可以这样做:

<span style="white-space:nowrap">(111) 222-3333 444444</span>

如果你觉得&nbsp;s 让它变得不可读。

于 2009-12-27T07:20:47.583 回答