7

PHP を使用してヘッダーをインクルードしようとするたびにinclude、トップ マージンが発生する理由がわかりません。Firebug を使用して確認したところ、上部に 22px のオフセット マージンがあると表示されています。誰かがこの問題を経験していますか? CSS のプロパティだと思います: top: 22px. しかし、h1 style="top: 0px; margin-top: 0px;" と書いても何も変わりません。永遠に解けないphp-CSSの謎だと思います。

編集: 上マージンのオフセットなどを取り除く唯一の方法は、H1: top: 0px; に次のプロパティを追加することです。位置: 絶対;

それらのプロパティは、将来さらに多くの問題を引き起こしますか?

このトップマージンオフセットの問題を解決するより良い方法はありますか?

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">
    &lt;h1>Header 2</h1>  </div>
</body>
</html>
  • とてもシンプルなので、(すべてのブラウザで)トップマージンがどこから来ているのか本当にわかりません。
  • PHPインクルードを使用した場合にのみ発生します。
  • ソースコードは、php インクルードを使用しない場合と同じように見えます。
4

12 に答える 12

3

Web ブラウザーから [ソースの表示] を選択したときに表示されるものをコピーするなどして、生成した HTMLを投稿する必要があります。PHP はエラーと警告を出力するように構成されているため、PHP で生成された HTML に謎の空白行が表示されることがよくあります。これが原因でなくても、出力された HTML を見れば問題をより簡単に診断できます。

于 2009-06-13T19:02:04.473 に答える
2

私は同じ問題を経験しました...それを修正するために、最初のファイルの先頭にhtmlの開始コメントを追加し、2番目のファイルの先頭にhtmlの終了コメントを追加しました。これにより、BOM (またはファイル間に表示されるもの) がコメント内に囲まれるため、html には出力されません。

例えば:

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

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

notepad ++でのエンコード形式間の変換の問題を解決しようとしましたが、役に立ちませんでした。したがって、これは問題のより良い解決策が見つかるまでの一時的な修正にすぎません。

于 2012-02-14T02:24:13.363 に答える
1

多くの場合、追加の新しい行は、追加する PHP スクリプト ファイルの末尾にあり、?> タグの後に追加されます。これにより、生成された出力に余分な文字が含まれます。ファイルの最後に終了 ?> タグを付けないようにすることで、この問題を解決できます。PHP は、閉じていることを「想定」することを知っています。

于 2009-06-13T20:08:46.937 に答える
1

PHP のインクルードに何が含まれているかを知らずに判断するのは困難ですが、その中に CSS が含まれていないことを確認してください。また、読み込んでいる CSS が検出され、読み込まれていることを確認してください。背景色またはその他の視覚的なものを変更してデバッグするので、ロードされていることを確認できます。

于 2009-06-13T18:49:36.220 に答える
0

私はメモ帳を使用しており、メニュー -> エンコーディング -> BOM なしの UTF-8 でのエンコーディングを選択しましたが、問題なく動作しました。これは、含まれるすべてのファイルに対して行う必要があります。これがあなたの問題の解決策だと思います。素敵な夜をお過ごしください。

于 2012-06-30T20:43:39.430 に答える
0

Dreamweaver は、BOM の自動追加機能に私を夢中にさせます。修正は次のとおりです。

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

于 2010-06-14T22:04:09.217 に答える
0

私は一度この問題を抱えていましたが、ここにそれを修正する方法があります - 本当に文字セットの問題です.私はそれを見つけるのに10時間を費やしました. 私の状況では、すべてのphpファイル(すべてのphpファイル、すべてのtpl(もしあれば)ファイル)の文字セットをUTF-8からBOMなしのUTF-8に変更し、保存してから試します。その後、.htaccess 文字列 "AddDefaultCharset UTF-8" で作成することもできます。

于 2013-07-20T17:14:22.263 に答える
0

リンクを提供するオプションはありますか? ローカルでいくつか試してみたところ、印刷できない文字がある場合、コンテンツと「doctype」宣言の間に「理由がない」ために、この「不要な」新しい行が表示される場合があります。">" の後のすべての文字を削除し、ヘキサエディタで確認して確認してください。詳細をお知らせください。

于 2009-06-13T18:49:41.353 に答える
0

問題を解決しようとして、ほとんどキーボードを殺しました。次に、 PSPadエディターを試してみました。明示的に変更するか.inc、IT WORKEDに変更しました!!.phpUTF-8

于 2012-02-11T09:32:31.983 に答える