text-align: center ne fonctionne pas

J'ai essayé de chercher des réponses, mais rien n'a fonctionné. Je suis en train d'aligner un paragraphe. Je suis assez sûr que rien n'est l'écrasement de code dans le CSS. Voici le code HTML et CSS:

CSS:

body {
  background-image: url("../../images/pic01.jpg");
  background-repeat;
}
#main {
  background-color: rgb(255, 84, 0);
  width: 75%;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: auto;
  margin-top: auto;
  overflow: auto;
  height: 100%;
  color: rgb(255, 255, 255);
}
#center {
  text-align: center;
}

HTML:

<body id="top">
  <div id="main">
    <p id="center">
      <h1> TEST </h1> 
    </p>
  </div>
</body>

Qu'est-ce que l'erreur ici?

  • Le HTML n'est pas valide. Un <p> ne peut pas contenir une <h1>
  • ... sauf si vous définissez h1 { display: inline-block; } (qui btw permettrait également de résoudre le texte-centrage de la question).
  • Non, le code HTML est toujours valide. La plupart des navigateurs de tenter de corriger l'erreur en fermant le paragraphe avant de la tête, puis la création d'un nouveau paragraphe après. Et <p> éléments de niveau bloc par défaut.
  • en plus de @j08691 mots - stackoverflow.com/a/9852381/1499781
  • merci beaucoup! Je n'ai jamais vraiment su qui, en quelque sorte... je vous suggère de poster que si je pouvais marquer comme correcte.
  • C'est que vrai même si vous définissez la h1 à inline ou inline-block?
  • Pour être plus précis, ce qui est incorrect sur le code ci-dessus est la fermeture </p> tag après le </h1>. <p id="center"> <h1> TEST </h1> doit être parfaitement valide en HTML depuis qu'il est autorisé à ne pas fermer explicitement <p> balises.