当使用源代码'\ n'时,为什么在浏览器中显示空格?

时间:2012-05-16 17:45:02

标签: html browser

在处理我的项目时,我发现html源代码中的\n在浏览器中显示为这两行之间的空格。例如,

a
b
浏览器中的

显示为a b。如何在不删除换行符的情况下避免使用此“空格”?我想要的结果是ab彼此相邻 - 不是在单独的行上,而是在它们之间有空格。

我使用php生成相当大的表单,为了便于阅读,我使用PHP_EOL\n相同,但在浏览器中显示额外的空格。我想摆脱它们。

5 个答案:

答案 0 :(得分:4)

更新回答

在下面的评论中,您已经说过,您正在寻找的结果是彼此相邻的“ab”,它们之间没有任何空格或换行符。

如果“a”和“b”真的是 text ,我认为你没有任何选择,如果你想让它们彼此相邻,你必须删除它。 (我意识到你说你不想这样做,我只是说,我认为你没有选择。)

如果“a”和“b”是元素(你说你输出了一个大的形式),你可以玩具有负CSS边缘的游戏,但它会变得很难看。或者移动该行的旧技巧会破坏标记,例如:

<input name="a" type="text"
><input name="b" type="text"
>

标签内的换行符不会显示(因为它位于标签中,而不是文本中)。

inter-element whitespace下面的链接也可能有所帮助,具体取决于您的整体加价;基本上有时候浏览器会忽略元素之间的空白,所以你可以稍微调整一下以使它做到这一点。

你说你用它是为了便于阅读。我想另一种选择,虽然它真的详细,但是将换行符放在注释中:

form field here<!--
-->next form field here<!--
-->next form field here

......但又一次,相当冗长(可能在可读性方面做得不多)。

你最好的选择是你说你不想要的:删除换行符。 : - )

原始回答

(从不清楚你想要“ab”的时候,彼此相邻;几乎每个人都认为你想要突破显示。) < / p>

  

为什么在使用源代码'\ n'时,浏览器中会显示空格?

因为HTML标准说所有空格字符序列(inter-element whitespace除外)都被视为单个空格。因此对于HTML,换行符,空格,制表符,回车符和换页符都完全相同:它们显示为空格。

  

如何在不删除换行符的情况下避免使用此“空格”?

有几种方法:

  1. 您可以使用br element

    a<br>b
    
  2. 您可以将ab放在使用块显示的单独的容器中(默认情况下,pdiv都可以,您可以使用CSS将display: block应用于其他人。)

    <p>a</p>
    <p>b</p>
    

    <div>a</div>
    <div>b</div>
    

  3. 如果您确实希望将换行符视为换行符,则可以使用pre元素,该元素具有对预格式化文本的特殊处理

    <pre>a
    b</pre>
    

    ...您可以使用CSS white-space style(值prepre-wrappre-line)将相同类型的处理应用于其他元素。

答案 1 :(得分:0)

使用html中的空格使用</br>而不是\ n。 \ n在代码中用于换行。

答案 2 :(得分:0)

\ n可能不是新行“显示”所需的唯一字符。

取决于平台\ n可能只为代码或代码和视觉输出提供换行符。某些平台需要\ r才能获得可视回车。在某些情况下,您甚至可能需要\ r \ n才能获得所需的输出。

进一步阅读SO&gt; What is the difference between \r and \n?

答案 3 :(得分:0)

如果您不想在渲染输出中留下空白,请不要将其放入输入中 - 这很简单。或者,生成奇妙可读的xml作为中间步骤,并使用xslt将其处理为不具有不需要的空格的html。

N.b:建议用户在此答案中插入适当的<sarcasm>标签;)

答案 4 :(得分:-3)

用这样的内联标记围绕它们

<span>a</span
><span>b</span>