2008-12-12 7 views
2

J'ai un problème de tableau HTML que j'aimerais mieux comprendre.HTML Table issue

Supposons que j'ai une 3 rangée HTML

<table> 
    <tr> 
     <td style="text-align:right;">A1</td> 
     <td>A2</td> 
    </tr> 
    <tr> 
     <td style="text-align:right;">B1</td> 
     <td>B2</td> 
    </tr> 
    <tr> 
     <td colspan="2">A very loooooooong string here</td> 
    </tr> 
</table> 

Avec un très long texte, le contenu dans les 2 premières lignes apparaissent comme ils sont presque centrés. Toutefois, si je déplace l'ensemble "Une très longue chaîne" <td> dans un <table> séparé à l'intérieur de la ligne, je vois que l'autre contenu ne se centre pas. Pourquoi l'affichage est-il différent lorsque le contenu <td> se trouve dans une autre table?

+0

Vous avez une étiquette colspan = 2 sur une table qui n'a qu'une colonne. Est-ce une erreur? – Elie

+0

@Elie: La table a deux colonnes! – PhiLho

+0

oups, mon erreur :-( – Elie

Répondre

0

Pouvez-vous s'il vous plaît fournir votre deuxième exemple? Lorsque j'ai créé ce qui suit, il semblait toujours le même. Il y a une chance que vous ne l'avez pas correctement incorporez la table dans une cellule de table avec une colspan de 2.

<table border="1"> 
<tr> 
    <td style="text-align:right;">A1</td> 
    <td>A2</td> 
</tr> 
<tr> 
    <td style="text-align:right;">B1</td> 
    <td>B2</td> 
</tr> 
<tr> 
    <td colspan="2"> 
    <table border="1"><tr> 
     <td>A very loooooooong string here</td> 
    </tr></table> 
    </td> 
</tr> 
</table> 
0

En expliquant un problème avec HTML, il est préférable d'indiquer quels navigateurs ont été utilisés pour tester ...
Quoi qu'il en soit, j'ai fait un test rapide avec FF3 et IE6, et je ne vois pas le comportement que vous décrivez: avec la table imbriquée, la chaîne longue a légèrement plus de padding mais l'autre contenu est toujours centré visuellement.
Vous devriez montrer votre autre code. Le mien est:

<table> 
<tr> 
    <td style="text-align:right;">A1</td> 
    <td>A2</td> 
</tr> 
<tr> 
    <td style="text-align:right;">B1</td> 
    <td>B2</td> 
</tr> 
<tr> 
    <td colspan="2"><table><tr><td>A very loooooooong string here</td></tr></table></td> 
</tr> 
</table> 
-2

Je pense que je sais ce que tu veux dire, est la deuxième partie de votre question basée sur:

<table> 
<tr> 
    <td style="text-align:right;">A1</td> 
    <td>A2</td> 
</tr> 
<tr> 
    <td style="text-align:right;">B1</td> 
    <td>B2</td> 
</tr> 
<tr> 
    <table><td colspan="2">A very loooooooong string here</td></table> 
</tr> 
</table> 

alors je suppose que la raison aligné à gauche sont rendus le contenu de la table est que les étiquettes de la table intérieure cachent le colspan de la table externe.

La réponse est d'arrêter d'utiliser html pour styliser votre table et d'utiliser CSS à la place!

+0

-vous dire

Une chaîne très loooooooong ici
inspite

+0

En effet. Vous ne pouvez pas mettre un

directement dans un . Et il n'y a rien de mal en soi avec les tables. En fait, il ressemble à des données tabulaires, donc c'est probablement une utilisation correcte. – recursive

+0

Oh ne voulait pas dire qu'il y avait quelque chose de mal avec les tables, en utilisant simplement des styles au sein de html au lieu d'utiliser CSS pour séparer la présentation du contenu. –

1

Si votre question se retrouve avec 2 tables, avec l'original comme celui-ci:

<table> 
<tr> 
    <td style="text-align:right;">A1</td> 
    <td>A2</td> 
</tr> 
<tr> 
    <td style="text-align:right;">B1</td> 
    <td>B2</td> 
</tr> 
</table> 

Et le texte looooong dans son propre:

<table> 
<tr> 
    <td colspan="2">A very loooooooong string here</td> 
</tr> 
</table> 

Alors la raison pour laquelle les deux premières lignes de la première table n'a plus l'air d'être centrée parce qu'elle ne l'est pas - SEULEMENT si vous comparez par rapport à la deuxième table.

Si vous déboguez avec border="1" dans vos attributs TABLE, vous verrez que la table dans laquelle ils sont contenus se réduit à la cellule de données de table la plus large possible. Pour cette raison, ils ne semblent pas centrés, même s'ils le sont toujours.

Ajoutez une largeur arbitraire à la première table et vous verrez qu'ils sont toujours centrés.