2009-06-13 3 views
7

Я не знаю, почему каждый раз, когда я пытаюсь включить заголовок с использованием PHP include, есть верхний край. Я проверил его с помощью Firebug, и он говорит, что верхняя граница смещения составляет 22px. Кто-нибудь сталкивается с этой проблемой? Я думаю, что это особенность CSS: top: 22px. Но ничто не может изменить его, даже если я напишу h1 style = "top: 0px; margin-top: 0px;". Я думаю, что это тайна php-CSS, которая никогда не будет решена.Php включает раздражающий верхний край

Редактировать: Единственный способ избавиться от этого смещения верхнего края или всего, что он есть, - добавить следующие свойства к 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"> 
    <h1>Header 2</h1> </div> 
</body> 
</html> 
  • Бог его так просто, что я действительно не знаю, где верхнее поле исходит из (во всех браузерах).
  • Это происходит только при использовании php.
  • Исходный код выглядит так же, как если бы я не использовал php include.
+0

не могли бы вы показать весь код? – erenon

+0

\t <мета содержание = "текст/html; кодировка = UTF-8" HTTP-эквив = "Content-Type" /> \t Без названия 1 \t <ссылка отн = "Таблица стилей" Тип = "текст/CSS" HREF = "style2.css" /> \t

\t \t
alexchenco

+0

Firebug также должен сообщить вам, какой файл и из какой строки это правило происходит. – Sampson

ответ

16

Это довольно странно, но я скопировал &, вставил ваш HTML-код в Notepad ++, и перед h1 появился странный персонаж. При вставке в блокнот, h в h1 был индексирован.

Поэтому мне кажется, что у вас может быть ошибочный (или неожиданный для PHP) символ в вашем включенном HTML (или в PHP, включая его). Мое подозрение? Страшная спецификация UTF-8. Попытайтесь изменить кодировку вашего включенного HTML-файла, чтобы устранить спецификацию (с которой я всегда сталкивался с проблемами при работе с PHP).

Редактировать: Да. Просто проверяется с помощью шестнадцатеричного редактора. В начале вашего включенного HTML есть знак байтового заказа. Я не знаю, какой редактор вы используете, но у вас должна быть возможность изменить настройки кодировки текста.

См. this для получения дополнительной информации о PHP & спецификации.

+0

Довольно странно, когда я оставляю его utf-8 Я ничего не вижу, но если я изменил кодировку на big5 или ASCII, я увижу 2 странных символа перед «Заголовком 2». Когда я удалю все кодировки (рендеринга нет, я думаю) Я вижу ту же самую проблему с верхним краем. Я начинаю думать, что есть призрак, преследующий мой html. – alexchenco

+1

Все UTF-8 не то же самое.Посмотрите, есть ли у вас опция для UTF-8 без спецификации или UTF-8. Какой редактор вы используете? – Jacob

+0

notepad ++ и Expression Web, поскольку этот последний имеет возможность изменять и выбирать кодировку. – alexchenco

1

ну, не зная, что входит в ваш php, сложно сказать, но убедитесь, что внутри него нет CSS. также убедитесь, что загружаемый CSS загружается и загружается. i debug, изменив цвет фона или что-то еще визуальное, поэтому вы можете быть уверены, что оно загружается.

0

У вас есть возможность дать нам ссылку? Я просто попробовал локально пару вещей, и вы можете получить эту «нежелательную» новую строку, по-видимому, «без причины» между вашим контентом и декларацией «doctype», если есть непечатаемый символ. Попробуйте удалить все символы после «>» и взгляните на него с помощью hexeditor, чтобы убедиться в этом. Пожалуйста, предоставьте нам дополнительную информацию.

3

Вы должны разместить свой HTML-код, например, копируя то, что вы видите, когда вы выбираете «View Source» из своего веб-браузера. Зачастую я видел загадочные пустые строки в PHP-сгенерированном HTML, потому что PHP настроен на вывод ошибок и предупреждений. Даже если это не вызвано этим, мы можем более легко диагностировать проблему, если увидим выведенный HTML.

1

Я бы поставил на все, что он не имеет ничего общего с php, включая его. как уже упоминалось ранее, во включенном файле может быть некоторый css, но я никогда не видел php ничего подобного тому, что вы описываете.

я хотел бы посмотреть на декларации типа документа [временно удалить его, чтобы увидеть, что происходит], и удалить текущую HTML декларации тега и заменить его с простым <HTML> тегом [снова только временно, для отладки]

+0

Я думаю, что вы правы ... Проблема должна быть в CSS в include-файле (header.html). Я удалил объявление doctype и «xmlns =» w3.org/1999/xhtml «но это не сработало. :( – alexchenco

1

Много раз новая строка будет в конце файла скрипта PHP, который вы включаете после тега?>. Это приведет к добавлению дополнительного символа в сгенерированный вывод. Вы можете устранить эту проблему, не имея закрывающего?> Тега в самом конце вашего файла. PHP знает, что «предположить», что он закрыт.

+0

спасибо, но файл, который я включаю, выглядит так:

header 2

it doesn У меня есть какой-либо открывающий или закрывающий тег php. – alexchenco

0

Это очень интересно, потому что я просто использовал вашу разметку и ваш css. Я также помещал его в файл php и включал html-файл. Но нет разницы. Нигде.

Поэтому убедитесь, что ваш браузер способен найти файл CSS с * { margin: 0; padding: 0 }

И я предлагаю вам использовать сбрасываемый лист, как этот - http://meyerweb.com/eric/tools/css/reset/index.html.

p.s. если у вас есть веб-пространство, поставьте его онлайн и отправьте нам ссылку.

+0

спасибо, но все остальное не сработало. Я пробовал код в Safari, Firefox, Chrome ... в единственном браузере я не вижу верхнего смещения (margin?) находится в Opera – alexchenco

0

Dreamweaver приводит меня в гайки с автоматическими дополнениями спецификации. Вот исправление:

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

+1

Пожалуйста, избегайте отправки ссылок только на ответы, если URL-адрес изменяется для этой страницы, этот ответ становится бесполезным. – JaredMcAteer

0

Я чуть не убил моего keyobard пытается решать проблемы. Затем я попробовал PSPad editor, внесите изменения .inc или .php в UTF-8 и IT WORKED !!

0

У меня возникла такая же проблема ... так что я сделал, чтобы исправить это было добавить комментарий открытия html в начале первого файла и комментарий закрытия html в начале второго файла. Это включает в себя спецификацию (или что-то вроде этого между файлами) внутри комментария, поэтому она не выводится в html.

Например:

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

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

Я попытался решить эту проблему преобразования между форматами кодирования в Notepad ++ безрезультатно. Так что это лишь временное исправление, и я найду лучшее решение проблемы.

0

Я использую блокнот, и я выбрал из меню -> Кодирование-> Кодирование с UTF-8 без спецификации, и это сработало просто отлично.Это должно быть сделано для каждого включенного файла. Я думаю, что это решение вашей проблемы. Приятного вечера.

0

У меня была одна проблема, и это способ исправить ее - ее действительно проблема в charset.I потратил 10 часов, чтобы ее найти. В моей ситуации я изменяю на всех php-файлах (все php-файлы, все tpl (если есть) файлы) charset от UTF-8 до UTF-8 без bom и сохраняют его и затем пытаюсь. После этого вы также можете сделать в .htaccess строку «AddDefaultCharset UTF-8».

Смежные вопросы