【发布时间】:2011-04-20 06:52:28
【问题描述】:
我用php+smarty写了一个php应用。
当我在firebug中查看网页源代码时,我发现link标签和script标签在body标签下。但它应该在 head 标签下。
body标签下面还有一些空格。
我的网页顶部有空格。
有什么问题?
【问题讨论】:
-
不用截图,只给我们页面的HTML代码。
标签: php html utf-8 smarty byte-order-mark
我用php+smarty写了一个php应用。
当我在firebug中查看网页源代码时,我发现link标签和script标签在body标签下。但它应该在 head 标签下。
body标签下面还有一些空格。
我的网页顶部有空格。
有什么问题?
【问题讨论】:
标签: php html utf-8 smarty byte-order-mark
添加以下 CSS:
html, body
{
padding: 0px;
margin: 0px;
}
【讨论】:
*{margin:0;padding:0} 这样的拙劣的重置工作,你真的应该使用正确的重置 CSS 文件。那里有一些:)
<head> 中的 <link> 标记之前有一些杂散的文本内容。浏览器看到文本并确定这意味着您正在启动主文档正文,但忘记包含 <body> 标记。
这在 HTML4 中实际上是有效的(如果不建议的话):<head> 结束标签和 <body> 开始标签都是可选的。这就是您可以将 <html><head><title>x</title>Hello! 作为有效 HTML 文档的方法。但它在 XHTML 中是不允许的,所以如果你 validate your document 你应该在出现杂散文本时得到“字符数据不允许在这里”错误。
然后浏览器将文档的其余部分解析为正文内容,将<link> 放在正文中(这无效有效,但仍然很常见)。当它出现时它会忽略真正的<body>,因为它已经有一个主体。
如果看不到杂散文本,可能是一个不可见字符,例如 U+00A0 不间断空格 或者——最有可能是中文文档——U+3000 表意空格 ,你可能会得到在某些输入法模式下按空格键。这些字符将不可见,但它们不像普通的 U+0020 空格或换行符那样是“可忽略的空白”,因此它们会触发“文本内容”处理并强制 <body>。
【讨论】:
<link> 之前结束<head> 并因此导致间隙)。我也不清楚模板最终如何在</title> 和<link> 之间添加任何内容。 .html 输出是什么样的?
通过验证器 (http://validator.w3.org/) 发送您的 HTML - 它会告诉您您在其中遇到了什么样的错误(缺少结束标记或其他东西)。
【讨论】:
空格,特别是网页开头的空格,通常是因为文件以 UTF-8 格式(包含 BOM)保存的。如果您使用的是 Notepad++ 或 Vim 等编辑器,请将文件保存为不带 BOM 的 UTF-8 格式。
【讨论】: