HTML源中锚点之间的新行在浏览器中创建空白区域

时间:2011-12-02 09:53:00

标签: html whitespace

  

可能重复:
  How do I remove the visibility of spaces between inline elements?

我通常将源代码格式化为人类易于阅读,AFAIK浏览器会从源中删除任何\n\t个字符,因此它们不会进入渲染的html。

今天我构建了一个菜单,在渲染的html中有2个锚点之间有几个像素,我找不到CSS / HTML中那个“空”空间的来源。几个小时后,我删除了源中2个锚点之间的新行(\n)(以防万一),空白区域消失了。

我创建了一个小提琴here

第一个菜单元素的源代码中的锚点位于同一行,其他2个菜单项的锚点之间有一条新行。 (将鼠标悬停在菜单元素上以查看我在说什么)。我在Firefox 8.0,Firefox Nightly 11.0a1(2011-12-01)和Chromium 14.0.835.202(Developer Build 103287 Linux)Ubuntu 11.10中具有相同的行为。

我无法理解为什么会这样。

我做错了什么以及如何避免这种行为(不改变源代码的可读性)?

1 个答案:

答案 0 :(得分:15)

锚点是内联元素。如果在元素之间添加空格(空格,制表符,newine,..),则会出现间隙。

根据具体情况,您可以使用以下任一方法消除差距:

  • 添加否定的margin-left,例如margin-left:-4px;
  • 使用float,例如float:left;
  • 删除元素之间的空格。为了保持代码的可读性,您可以在开始标记之后中断,例如:

    <a href="..">Link</a><a
       href="..">Link 2</a>