Frage

Ich weiß nicht, warum ich jedes Mal versuchen, meine Header mit PHP include enthalten gibt es einen oberen Rand. Ich habe es mit Firebug und es sagt, es gibt einen 22px Offset-Marge auf der Oberseite. Erlebt jemand dieses Problem? Ich denke, es ist ein CSS propiety: top: 22px. Aber nichts kann es ändern, auch wenn ich h1 style = schreiben "top: 0px; margin-top: 0px;". Ich denke, es ist ein PHP-CSS Geheimnis, das nie gelöst werden.

edit: Die einzige Möglichkeit, dieser oberen Rand versetzt, um loszuwerden, oder was auch immer es ist, ist die Folgeeigenschaften zum H1 hinzuzufügen: top: 0px;                          position: absolute;

Werden diese Eigenschaften erzeugen mehr Probleme in der Zukunft?

gibt es einen besseren Weg, um dieses Top-margin-Offset-Problem zu lösen?

edit2: Ich denke, es gibt ein Problem mit der Codierung. Gibt es einen Konflikt zwischen der Codierung der Datei enthält (header.html) und die Indexdatei?

Mein Index geht so:

<!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>

Mit diesem CSS:

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

Mein header.html (die, die enthalten ist wird):

<h1>Header 2</h1> 

Und das ist die Ausgabe:

<!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>
  • Gott seine so einfach, dass ich wirklich weiß nicht, wo der obere Rand herkommt (in allen Browsern).
  • Es geschieht nur, wenn ich mit PHP enthält.
  • Der Quellcode sieht genauso aus, wie wenn ich nicht verwenden? Php include.
War es hilfreich?

Lösung

Das ist ziemlich seltsam, aber ich kopiert und die Ausgabe HTML-Code in Notepad ++ eingefügt, und es war ein seltsames Zeichen unmittelbar vor dem h1. Wenn es in der Editor einfügen, wurde die Uhr im h1 indiziert.

Daher sieht es für mich wie Sie ein fehlerhaftes (oder unerwartet für PHP) Zeichen in Ihrem enthalten HTML (oder in der PHP einschließlich it) haben können. Mein Verdacht? Der gefürchtete UTF-8 BOM. Versuchen Sie, die Kodierung Ihrer enthaltenen HTML-Datei zu ändern, um die BOM zu beseitigen (was ich habe immer Probleme gehabt mit beim Umgang mit PHP).

Edit: Ja. Nur mit einem Hex-Editor überprüft. Es gibt eine Byte-Reihenfolge-Marke am Anfang Ihres HTML enthalten. Ich weiß nicht, welchen Editor Sie verwenden, aber Sie sollten die Möglichkeit haben, Ihren Text-Encoding-Einstellungen zu ändern.

Siehe diese für weitere Informationen über PHP & die BOM.

Andere Tipps

Sie sollten Ihre erzeugt HTML veröffentlichen, zB durch Kopieren, was Sie sehen, wenn Sie „View Source“ von Ihrem Web-Browser auswählen. Oft habe ich mysteriös leere Zeilen in PHP-generierten HTML-Code zu sehen, weil PHP Ausgabefehler und Warnungen konfiguriert ist. Selbst wenn dies nicht durch die verursacht wird, können wir mehr-leicht das Problem diagnostizieren, wenn wir den ausgegebenen HTML zu sehen.

gut, ohne zu wissen, was in Ihrem php include, ist es schwer zu sagen, aber stellen Sie sicher, in der es keine CSS gibt. stellen Sie sicher auch, dass CSS Sie Laden gefunden zu werden und geladen. i debuggen, indem Sie die Hintergrundfarbe oder etwas anderes visuelle ändern, so kann u sicher sein, es zu laden.

Ich würde alles wetten, dass es nichts mit dem PHP zu tun hat, ist es selbst ist. wie bereits erwähnt, können einige CSS in der Datei enthalten sind es, die es tut, aber ich habe noch nie so etwas wie PHP, was Sie beschreiben.

gesehen

i auf der Doctype Deklaration aussehen würde [es vorübergehend entfernen, um zu sehen, was passiert], und entfernen Sie mit einem einfachen Tag des aktuellen HTML-Deklarationstag und ersetzen sie [wieder nur vorübergehend, zu debuggen]

Eine Menge Zeit eine zusätzliche neue Linie wird am Ende einer PHP-Skript-Datei, die Sie nach dem?> Tag sind inklusive. Dadurch wird ein zusätzliches Zeichen in der generierten Ausgabe enthalten sein. Sie können dieses Problem beheben, indem kein abschließendes haben?> Tag ganz am Ende der Datei. PHP weiß, zu „übernehmen“, dass es geschlossen ist.

Haben Sie die Möglichkeit haben, uns einen Link zu geben? Ich habe gerade versucht, vor Ort ein paar Dinge, und Sie können für scheinbar „ohne Grund“ überhaupt zwischen dem Inhalt und der „doctype“ Erklärung, um diese „unerwünschte“ neue Zeile zu erhalten, wenn es ein nicht druckbare Zeichen sind. Versuchen Sie, alle Zeichen nach dem „>“ löschen und einen Blick auf sich mit einem Hexeditor zu ergreifen, um bestimmten daraus zu machen. Bitte geben Sie uns weitere Informationen.

Das ist sehr interessant, weil ich gerade Ihren Markup und CSS verwendet. Ich habe es in eine PHP-Datei auch und eine HTML-Datei enthalten. Aber es gibt keinen Spielraum. Nirgendwo.

So stellen Sie sicher, dass Ihr Browser Lage ist, die CSS-Datei zu finden, mit * { margin: 0; padding: 0 }

Und ich schlage vor, Sie ein Reset-Blatt zu verwenden, wie diese - http: //meyerweb.com/eric/tools/css/reset/index.html .

P. S. wenn Sie etwas Webspace besitzen, sie online stellen und uns einen Link senden.

Dreamweaver macht mich verrückt mit ihm automatischen BOM Ergänzungen ist. Hier ist das Update:

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

erlebte ich das gleiche Problem ... so, was ich zu beheben tat es war eine HTML-Öffnung Kommentar am beggining der ersten Datei und eine HTML-Schluss Kommentar zu Beginn der zweiten Datei hinzuzufügen. Dies umschließt die BOM (oder was auch immer zwischen den Dateien erscheint in) in einem Kommentar, so dass es in html nicht ausgegeben wird.

Zum Beispiel:

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

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

Ich habe versucht, das Problem Konvertierung zwischen Encoding-Formaten in Notepad zu beheben ++ ohne Erfolg. Das ist also nur eine temporäre Lösung, bis ich eine bessere Lösung für das Problem zu finden.

Ich bin mit Notizblock und ich aus dem Menü ausgewählt -> Codierung-> Codierung mit UTF-8 ohne BOM und es funktionierte gut. Dies sollte für jede Datei enthalten erfolgen. Ich denke, dass dies die Lösung für Ihr Problem ist. Haben Sie einen schönen Abend.

Ich tötete fast mein keyobard zu Problem zu lösen versuchen. Dann habe ich versucht PSPad , explizit ändern .inc oder .php UTF-8 und es hat funktioniert !!

hatte ich einmal dieses Problem und hier ist der Weg, um es zu beheben - es ist wirklich Problem in charset.I hat 10 Stunden damit verbracht, es zu finden. In meiner Situation ändern, die ich auf all PHP-Dateien (alle PHP-Dateien, alle tpl (wenn vorhanden) Dateien) charset von UTF-8 in UTF-8 ohne BOM und speichern Sie es und versuchen Sie dann. Danach können Sie auch bei .htaccess string „AddDefaultCharset UTF-8“ machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top