2

我在开发网站时遇到了奇怪的问题。

我计算机上的任何浏览器都会在页面的某些元素上方添加间距(例如,导航栏上方、导航栏中的下拉菜单、容器等)。在 Chrome 开发者工具中,它显示为有一个奇怪的text元素(带空格的引号): 1

但在源代码中它没有它显示: 2

如果我从工具中删除引号,间距就会消失。

Javascript或PHP无法添加引号(间距):它存在于我们评论所有脚本包含并禁用.html文件的php预处理(示例)。CSS 无法添加此间距:例如,对于导航栏,我们有规则:

.navbar {
  margin-top: 0;
}

我计算机上的所有浏览器中都存在间距(在 Firefox、Chrome、IE 9 中测试)。

此外,Firefox 开发工具不显示任何引号: 3

但在 Chrome 开发工具中引号的地方添加了代码间距。

那么,它是什么?如何删除这个间距(我不想使用像负边距这样的丑陋解决方案)?

请评论您的机器上是否有此问题?谢谢。

4

3 回答 3

6

在我看来,这些空间就像 一个“特殊空间”。它们可能看起来像一个普通的空格字符,即使在文本编辑器中也是如此

查看生成 HTML 结构的代码。然后删除请求中的空格。使用空格键放回格式化空格。


编辑

在我的文本编辑器中仔细观察,我意识到,你的代码中有一个特殊的变音字符。

当您从 Notepad++ 编辑器查看我的屏幕时,在小于字符 ( <)<nav><li>我标记为红色的标记处有小“钩子”。

不要只删除空格,还要删除小于号 ( <) 并使用键盘重新键入。

在此处输入图像描述

于 2012-09-07T14:58:26.660 回答
3

<body>和元素之间的字符<nav>是换行符和 BOM - 字节顺序标记(又名零宽度不间断空格)U+FEFF(UTF-8 中的 EF BB BF)。见下图取自 Hex 编辑器 Neo

在此处输入图像描述

这是您需要删除的 BOM。

于 2012-09-07T15:27:52.083 回答
1

您的源 HTML 中有空格:在<body>和之间<nav>。让它消失的唯一方法是将两个标签一起运行,如

<body><nav class="..."> ... </nav></body>

HTML 规定,属性值之外的空格被视为一个空格,因此有多少空格,是否是换行符等并不重要。即使您的 HTML 中有一个空格字符,符合标准的浏览器必须将其视为文本节点。Chrome 通过显示引号来暗示这些文本节点。

于 2012-09-07T14:46:57.260 回答