Php включает раздражающее верхнее поле
Вопрос
Я не знаю, почему каждый раз, когда я пытаюсь включить свой заголовок, используя PHP include
там есть верхний предел.Я проверил это с помощью Firebug, и там написано, что вверху есть поле со смещением 22 пикселя.Кто-нибудь сталкивается с этой проблемой?Я думаю, что это свойство CSS:Наверх:22 пикселя.Но ничто не может изменить это, даже если я напишу h1 style="top:0 пикселей;маржа-верхняя:0 пикселей;".Я думаю, что это загадка php-CSS, которая никогда не будет разгадана.
Редактировать:Единственный способ избавиться от этого смещения верхнего поля или что бы это ни было, это добавить свойства follow к H1:Наверх:0 пикселей;положение:абсолютный;
Будут ли эти свойства создавать больше проблем в будущем?
есть ли лучший способ решить эту проблему со смещением верхнего поля?
редактировать 2:Я думаю, что есть проблема с кодировкой.Существует ли конфликт между кодировкой включаемого файла (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 includes.
- Исходный код выглядит так же, как и тогда, когда я не использую php include.
Решение
Это довольно странно, но я скопировал и вставил ваш выходной HTML-код в Notepad ++, и там был странный символ непосредственно перед h1.При вставке его в Блокнот была указана буква h в строке h1.
Следовательно, мне кажется, что у вас может быть ошибочный (или неожиданный для PHP) символ в вашем включенном HTML (или в PHP, включающем его).Мое подозрение?Ужасная спецификация UTF-8.Попробуйте изменить кодировку вашего включенного HTML-файла, чтобы исключить спецификацию (с которой у меня всегда были проблемы при работе с PHP).
Редактировать:Ага.Только что проверено с помощью шестнадцатеричного редактора.В начале вашего включенного HTML-кода есть отметка о порядке байтов.Я не знаю, какой редактор вы используете, но у вас должна быть возможность изменить настройки кодировки текста.
Видишь это для получения дополнительной информации о PHP и спецификации.
Другие советы
Вы должны опубликовать свой сгенерированный HTML, например, путем копирования того, что вы видите, когда выбираете "Просмотреть исходный код" в своем веб-браузере.Часто я видел загадочные пустые строки в сгенерированном PHP HTML, потому что PHP настроен на вывод ошибок и предупреждений.Даже если это вызвано не этим, мы можем более легко диагностировать проблему, если увидим выведенный HTML-код.
ну, не зная, что находится в вашем php include, трудно сказать, но убедитесь, что внутри него нет CSS.также убедитесь, что загружаемый вами CSS найден и загружен.я отлаживаю, изменяя цвет фона или что-то еще визуальное, чтобы вы могли быть уверены, что он загружается.
я бы поспорил на что угодно, что это не имеет ничего общего с тем, что php включает в себя сам.как упоминалось ранее, во включенном файле может быть какой-то css, который это делает, но я никогда не видел в php ничего подобного тому, что вы описываете.
я бы посмотрел на объявление doctype [временно удалите его, чтобы посмотреть, что произойдет] и удалил текущий тег объявления html и заменил его простым <html> тег [опять же, временно, для отладки]
Часто дополнительная новая строка будет находиться в конце файла PHP-скрипта, который вы добавляете после тега ?>.Это приведет к включению дополнительного символа в сгенерированный результат.Вы можете устранить эту проблему, не имея закрывающего тега ?> в самом конце вашего файла.PHP знает, что нужно "предположить", что он закрыт.
У вас есть возможность дать нам ссылку?Я только что попробовал локально пару вещей, и вы можете получить эту "нежелательную" новую строку, по-видимому, "без причины" вообще между вашим содержимым и объявлением "doctype", если есть непечатаемый символ.Попробуйте удалить все символы после ">" и посмотрите на это с помощью шестнадцатеричного редактора, чтобы убедиться в этом.Пожалуйста, предоставьте нам больше информации.
Это очень интересно, потому что я только что использовал вашу разметку и ваш css.Я также поместил это в php-файл и включил html-файл.Но здесь нет никакой разницы.Нигде.
Поэтому убедитесь, что ваш браузер способен найти css-файл с
* { margin: 0; padding: 0 }
И я предлагаю вам использовать лист сброса, подобный этому - http://meyerweb.com/eric/tools/css/reset/index.html.
p.s.если у вас есть какое-то веб-пространство, разместите его в Сети и пришлите нам ссылку.
Dreamweaver сводит меня с ума своими автоматическими добавлениями спецификаций.Вот как это исправить:
http://www.adobe.com/support/documentation/en/dreamweaver/mx2004/dwusing_errata/dwusing_errata2.html
Я испытал то же самое problem...so что я сделал, чтобы исправить это, так это добавил html-комментарий к открытию в начале первого файла и html-комментарий к закрытию в начале второго файла.При этом спецификация (или что-то еще, что появляется между файлами) помещается внутри комментария, поэтому она не выводится в формате html.
Например:
#header.php
<?php ?>
<html>
<!--
#body.php
<?php ?>
-->
<body>
...
Я пытался устранить проблему с преобразованием между форматами кодировки в notepad ++, но безрезультатно.Так что это лишь временное решение, пока я не найду лучшее решение проблемы.
Я использую блокнот, и я выбрал из меню -> Encoding-> Encoding with UTF-8 без спецификации, и это сработало просто отлично.Это должно быть сделано для каждого включенного файла.Я думаю, что это решение вашей проблемы.Приятного вечера.
Я чуть не убил свой кейобард, пытаясь решить эту проблему.Тогда я попробовал Редактор PSPad, изменить явно .inc
или .php
Для UTF-8
и ЭТО СРАБОТАЛО !!
Однажды у меня была эта проблема, и вот способ ее исправить - это действительно проблема с кодировкой.Я потратил 10 часов, чтобы найти ее.В моей ситуации я меняю кодировку во всех файлах php (все файлы php, все файлы tpl (если у вас есть)) с UTF-8 на UTF-8 без спецификации, сохраняю ее и затем пробую.После этого вы также можете создать в .htaccess строку "AddDefaultCharset UTF-8".