2009-09-03 5 views
2

Quelqu'un peut-il expliquer pourquoi IE7 insiste pour mettre un espace entre la table et le ul dans cet exemple? Cela ne semble pas arriver dans IE8 ou FF.Espacement IE7 dans un UL

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<body> 
    <ul style="background-color: Blue;"> 
     <li> 
      <table cellpadding="0" cellspacing="0" border="0" width="100%" style="background-color: Red"> 
       <tr> 
        <td> 
         <img style="display: block" src="http://www.google.com/intl/en_ALL/images/logo.gif" 
          height="25" border="0" width="150" /> 
        </td> 
       </tr> 
      </table> 
      <ul style="background-color: Green"> 
       <li>One</li> 
       <li>Two</li> 
      </ul> 
     </li> 
    </ul> 
</body> 
</html> 
+0

Note non liée, border = "0" serait meilleur dans le CSS comme bordure: none; ou quelque chose – marcgg

+0

Le problème est lié à la balise img en quelque sorte. J'ai enlevé la table et im ul, et l'espace apparaît toujours. – Jeremy

+0

Question inactive: l'espace apparaît-il toujours si vous supprimez l'affichage: blocage de l'image? – Martha

Répondre

4

Vous devez donner hasLayout à la li contenant la table et ul.

<ul style="background-color: Blue;"> 
    <li style="zoom:1;"> 
     <table cellpadding="0" cellspacing="0" border="0" width="100%" style="background-color: Red"> 
+0

Super article, merci de partager! – Jeremy

+0

C'est l'attribut 'zoom' qui l'a fait pour moi. Qu'est-ce que c'est que la merde? Je fais du CSS depuis des années et je n'ai jamais entendu parler de cet attribut. CURSEZ VOUS IE !!! – Chiramisu

2

Tous les navigateurs ont différents styles par défaut. Certains ont plus de sens que d'autres. Essayez d'utiliser un CSS Reset pour niveler le terrain de jeu, pour ainsi dire.

+0

n'aurait pas pu dire cela mieux, +1 – marcgg

+0

Je viens d'essayer cela avec l'exemple ci-dessus, en ajoutant la réinitialisation YUI et l'espace apparaît toujours. – Jeremy

+0

la réinitialisation peut ne pas être parfaite, mais elle fait du bon travail. – geowa4

1

J'ai déjà combattu ce problème avec Internet Explorer, et voici la solution: supprimez les espaces entre les tags </td> et </tr>. Voici comment votre code html doit être:

</td></tr></table> 

Le navigateur créer un TextNode entre </td> et </tr> ce qui est de l'espace supplémentaire que vous voyez dans votre page.

+0

Pourquoi la downvote? : -S – Rodrigo

+0

le moteur de rendu fait ceci: s/\ s +/\ s/ – geowa4

+0

Oui, je sais que le moteur fait ça, mais, l'as-tu essayé? – Rodrigo