Bon, j'explique quand même.
Le coup du font-size à 0px (ou 0 tout court), c'est intéressant car ça permet de constater que cet écart correspond à une hauteur de ligne de texte. Pour être plus précis, l'écart correspond à une hauteur de ligne, soit la hauteur du texte multipliée par le ratio par défaut de hauteur de ligne (line-height). Donc pour un font-size: 20px, on aura un écart dans les 25 ou 26px. (Ça va dépendre de la fonte si on ne spécifie pas un line-height précis.)
Avec quelques recherches en plus, on peut constater que:
- cet écart est inclus dans div.page (mettre une couleur de fond visible à div.page pour le vérifier);
- Firebug affiche une ligne vide entre la balise ouvrante de div.page et div.header-container;
- Opera Dragonfly affiche la même chose;
- on a donc probablement des caractères de texte autres que des espaces, tabulations et retours à la ligne, qui seraient pris en compte et entraineraient la création par le navigateur d'une ligne de texte.
Et c'est là que c'est pas évident à trouver, car mon éditeur de code n'affiche rien de bizarre. Même si je supprime tout l'espace entre <div class="page"> et <div class="header-container">, ça ne donne rien. Par contre, si je supprime un peu plus de caractères avant et après, et que je réécris le code concerné, paf, problème corrigé.
Donc je sors mon éditeur hexadécimal pour voir ce qui peut bien se cacher là, et je trouve les trois octets suivants qui ne s'affichent pas visuellement:
EF BB BF
Je supprime ces trois octets, j'enregistre, et voilà: bug corrigé.
Donc le problème est que tu as des caractères invisibles dans ton code qui sont malgré tout pris en compte par les navigateurs. Il s'agit à priori de caractères non imprimables en UTF-8.
J'allais conclure en disant que je ne savais pas ce que c'était ni d'où ça venait, et puis là: trois caractères non imprimables dans un fichier en UTF-8? Bon sang mais c'est bien sûr! (Insérer ici la tête de l'inspecteur Bougret et celle de son fidèle adjoint Charolles.) C'est le BOM.
Une manipulation tout simple pour voir ce machin (sans passer par un éditeur hexadécimal): aller sur la page de test, et faire Affichage > Encodage des caractères > ISO-8859-1. Et voilà.
Moralité: brûler sur un bûcher celui qui enregistre ses fichiers en UTF-8
avec BOM. Sagouin.
Modifié par Florent V. (16 Nov 2009 - 21:17)