Pergunta

Eu não sei por que cada vez que eu tento incluir meu cabeçalho usando include do PHP há uma margem superior. Eu verifiquei usando o Firebug e ele diz que há uma margem de compensar 22px no topo. Alguém está tendo esse problema? Eu acho que é um propiety CSS: top: 22px. Mas nada pode mudá-lo mesmo se eu escrever estilo h1 = "top: 0px; margin-top: 0px;". Eu acho que é um mistério php-CSS que nunca será resolvido.

edit: A única maneira de se livrar dessa margem superior offset ou seja o que for, é adicionar as propriedades seguir para o H1: top: 0px; position: absolute;

Será que essas propriedades gerar mais problemas no futuro?

há uma maneira melhor de resolver este problema topo offset margem?

edit2: Eu acho que há um problema com a codificação. Existe um conflito entre a codificação do arquivo incluído (header.html) e o arquivo de índice?

O meu índice é assim:

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

Com este CSS:

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

Meu header.html (o que está sendo incluído):

<h1>Header 2</h1> 

E essa é a saída:

<!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>
  • Deus é tão simples que eu sei que realmente não onde a margem superior está vindo (em todos os navegadores).
  • Isso só acontece quando eu uso php inclui.
  • O código-fonte é a mesma de quando eu não uso php incluir.
Foi útil?

Solução

Isso é muito estranho, mas eu copiado e colado a sua saída HTML no bloco de notas ++, e não havia um personagem estranho pouco antes do h1. Quando colando-o no bloco de notas, o h na h1 foi subscrito.

Por isso, parece-me que você pode ter um caráter errôneo (ou inesperado para PHP) em seu HTML incluído (ou no PHP inclusive). Minha suspeita? A temida BOM UTF-8. Tente alterar a codificação do seu arquivo HTML incluído para eliminar o BOM (que eu sempre tive problemas com quando se lida com PHP).

Edit: Yep. Só verificados com um editor hexadecimal. Há uma marca de ordem de bytes no início do seu HTML incluído. Eu não sei qual editor você usa, mas você deve ter a opção de alterar suas configurações de codificação de texto.

este para mais informações sobre o PHP & o BOM.

Outras dicas

Você deve postar sua gerado HTML, como copiando o que você vê quando você selecione "View Source" do seu navegador web. Muitas vezes, eu vi linhas em branco misteriosas em HTML PHP gerado porque o PHP é configurado para erros de saída e avisos. Mesmo que isso não é causada por isso, podemos mais facilmente-diagnosticar o problema, se vemos o HTML emitidas.

bem, sem saber o que está em seu php incluem, é difícil dizer, mas certifique-se que não há dentro CSS dele. Também certifique-se que o CSS que você está carregando está sendo encontrado e carregado. i depurar mudando a cor de fundo ou qualquer outra coisa visuais tão u pode ter certeza que de carregamento.

Eu aposto qualquer coisa que não tem nada a ver com o php incluí-lo de si mesmo. como mencionado anteriormente, pode haver alguma css no arquivo incluído que está fazendo isso, mas eu nunca vi nada parecido com php que você está descrevendo.

Eu olhava para a declaração doctype [remover temporariamente para ver o que acontece], e remover a tag declaração html atual e substituí-lo com uma tag simples [novamente apenas temporariamente, para depurar]

Um monte de vezes que uma nova linha extra será no final de um arquivo de script PHP que você está incluindo após a tag?>. Isso fará com que um caractere extra para ser incluído na saída gerada. Você pode resolver este problema por não ter um fechamento?> Marca no final do seu arquivo. PHP sabe "assumir" que ele está fechado.

Você tem a opção de nos dar um link? Eu apenas tentei localmente um par de coisas e você pode obter esta nova linha "indesejado" para, aparentemente, "nenhuma razão" em tudo entre o seu conteúdo e a declaração "doctype", se houver um carácter não imprimível. Tente excluir todos os caracteres depois do ">" e tomar um olhar para ele com um editor hexadecimal para ter certeza disso. Por favor, nos fornecer mais informações.

Isso é muito interessante, porque eu usei apenas a sua marcação e seu css. Eu também colocá-lo em um arquivo php e incluiu um arquivo html. Mas não há nenhuma margem. Em nenhum outro lugar.

Portanto, verifique se o seu navegador é capaz de encontrar o arquivo css com * { margin: 0; padding: 0 }

E eu sugiro que você use uma folha de reset como este - http: //meyerweb.com/eric/tools/css/reset/index.html .

P.S. Se você possui algum espaço, colocá-lo on-line e enviar um link.

Dreamweaver me deixa doida com ele é adições BOM automáticas. Aqui está a correção:

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

Eu experimentei o mesmo problema ... assim que eu fiz para corrigi-lo foi para adicionar um comentário de abertura html no início do primeiro arquivo e um comentário final html no início do segundo arquivo. Isso inclui o BOM (ou o que está aparecendo entre os arquivos) dentro de um comentário por isso não é emitido em html.

Por exemplo:

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

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

Eu tentei corrigir o problema conversão entre formatos de codificação no bloco de notas ++ sem sucesso. Portanto, esta é apenas uma correção temporária até eu encontrar uma solução melhor para o problema.

Eu estou usando o bloco de notas e selecionei a partir do menu -> Cód> Codificação com UTF-8 sem BOM e funcionou muito bem. Isto deve ser feito para cada arquivo incluído. Eu acho que esta é a solução para o seu problema. Tenha uma boa noite.

Eu quase matei minha keyobard tentando resolver a problema. Então eu tentei PSPad editor , mudança explicitamente .inc ou .php para UTF-8 e funcionou !!

Eu tinha um tempo este problema e aqui é a maneira de corrigi-lo - a sua realmente problema em charset.I passaram 10 horas para encontrá-lo. Na minha mudança que eu situação em todos os arquivos PHP (todos os arquivos PHP, tudo TPL (se tiver) arquivos) charset de UTF-8 para UTF-8 sem BOM e guardá-lo e tentar então. Depois disso, você também pode fazer a seqüência de .htaccess "AddDefaultCharset UTF-8".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top