Php包括恼人的上边距

时间:2009-06-13 18:42:43

标签: php css include margin

我不知道为什么每次我尝试使用PHP的include包含我的标题时,都有一个上边距。我用Firebug检查了它,它说顶部有22px的偏移余量。有人遇到过这个问题吗?我认为这是一个CSS专长:top:22px。但即使我写了h1 style =“top:0px; margin-top:0px;”,也无法改变它。我认为这是一个永远无法解决的php-CSS之谜。

编辑:摆脱上边距偏移或其他任何东西的唯一方法是将以下属性添加到H1:top:0px;                          position:absolute;

这些属性将来是否会产生更多问题?

有没有更好的方法来解决这个最大的保证金抵消问题?

edit2:我认为编码存在问题。包含文件(header.html)的编码与索引文件之间是否存在冲突?

我的索引是这样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Untitled 1</title>
    <link rel="stylesheet" type="text/css" href="style2.css" />
</head>
<body>
    <div id="page-wrap">
    <?php include_once("header2.html"); ?>
    </div>
</body>
</html>

使用这个CSS:

* {
    padding: 0px;
    margin: 0px;
}

我的 header.html (包含的那个):

<h1>Header 2</h1> 

这就是输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Untitled 1</title>
    <link rel="stylesheet" type="text/css" href="style2.css" />
</head>
<body>
    <div id="page-wrap">
    <h1>Header 2</h1>  </div>
</body>
</html>
  • 上帝很简单,我真的不知道最高利润来自哪里(在所有浏览器中)。
  • 只有当我使用php include时才会发生。
  • 源代码看起来和我不使用php include时相同。

12 个答案:

答案 0 :(得分:16)

这很奇怪,但我复制了&amp;将输出HTML粘贴到Notepad ++中,并且在h1之前有一个奇怪的字符。将其粘贴到记事本中时,h1中的h是下标的。

因此,在我看来,您可能在包含的HTML(或包含它的PHP)中有错误(或意外的PHP)字符。我的怀疑?可怕的UTF-8 BOM。尝试更改所包含的HTML文件的编码以消除BOM(我在处理PHP时总是遇到问题)。

编辑:是的。刚用十六进制编辑器验证。在包含的HTML的开头有一个字节顺序标记。我不知道您使用的编辑器,但您应该可以选择更改文本编码设置。

有关PHP&amp ;;的更多信息,请参阅this BOM。

答案 1 :(得分:3)

您应该发布生成的 HTML,例如通过复制从Web浏览器中选择“查看源”时看到的内容。通常情况下,我在PHP生成的HTML中看到了神秘的空白行,因为PHP配置为输出错误和警告。即使这不是由此引起的,如果我们看到输出的HTML,我们可以更容易地诊断问题。

答案 2 :(得分:1)

好吧,不知道你的php包含什么,很难说,但确保里面没有CSS。还要确保您正在加载的CSS已找到并加载。我通过改变背景颜色或其他视觉来调试,所以你可以确定它正在加载。

答案 3 :(得分:1)

我敢打赌任何与php无关的事情包括它的自我。如前所述,在包含的文件中可能有一些css正在这样做,但我从来没有见过像你所描述的那样的PHP。

我会查看doctype声明[暂时删除它以查看会发生什么],并删除当前的html声明标记并将其替换为普通的&lt; html&gt;标签[再次暂时,调试]

答案 4 :(得分:1)

很多时候,一个额外的新行将在你包含的PHP脚本文件的末尾?&gt;标签。这将导致在生成的输出中包含额外的字符。您可以通过不关闭来解决此问题吗?&gt;标记在文件的最后。 PHP知道“假设”它已关闭。

答案 5 :(得分:0)

您可以选择给我们链接吗?我只是在本地尝试了一些事情,如果有一个不可打印的字符,你可能会在你的内容和“doctype”声明之间显然“毫无理由”地得到这个“不需要的”新行。尝试删除“&gt;”后面的所有字符并用一个hexeditor来看看它以确定它。请提供更多信息。

答案 6 :(得分:0)

非常有趣,因为我只使用了你的标记和你的CSS。我也将它放入一个php文件并包含一个html文件。但没有余地。不通。

因此请确保您的浏览器能够找到css文件 * { margin: 0; padding: 0 }

我建议你使用像这样的重置表 - http://meyerweb.com/eric/tools/css/reset/index.html

P.S。如果您拥有一些网站空间,请将其置于在线状态并向我们发送链接。

答案 7 :(得分:0)

Dreamweaver通过它的自动BOM添加让我疯狂。这是修复:

http://www.adobe.com/support/documentation/en/dreamweaver/mx2004/dwusing_errata/dwusing_errata2.html

答案 8 :(得分:0)

我差点杀了我的键盘试图解决问题。 然后我尝试了PSPad editor,明确地将.inc.php更改为UTF-8并进行了工作!!

答案 9 :(得分:0)

我遇到了同样的问题...所以我要做的就是在第一个文件的开头添加一个html开头注释,在第二个文件的开头添加一个html结束注释。这包含注释中的BOM(或文件之间出现的任何内容),因此它不会以html格式输出。

例如:

#header.php
<?php ?>
<html>
<!--

#body.php
<?php ?>
-->
<body>
...

我试图解决在notepad ++中编码格式之间转换的问题,但无济于事。所以这只是一个临时修复,直到找到解决问题的更好方法。

答案 10 :(得分:0)

我正在使用记事本,我从菜单中选择了 - &gt;编码 - &gt;使用没有BOM的UTF-8编码,它运行得很好。应该为每个包含的文件执行此操作。我认为这是解决您问题的方法。祝你度过愉快的夜晚。

答案 11 :(得分:0)

我有一次这个问题,这是修复它的方法 - 它在charset中真正的问题。我花了10个小时才找到它。在我的情况下,我改变所有PHP文件(所有PHP文件,所有tpl(如果你有)文件)charset从UTF-8到UTF-8没有bom并保存并尝试然后。之后你也可以使用.htaccess字符串“AddDefaultCharset UTF-8”。