2010-09-24 22 views
4

J'ai une table avec un nombre variable de colonnes que je veux placer dans un div de largeur fixe.Le tableau ne débordera pas

Je souhaite que les colonnes de la table aient une largeur fixe et que la table déborde horizontalement à l'intérieur de la div si elle est trop large.

Cependant, la table semble se redimensionner pour s'adapter à l'intérieur de la div.

<style> 
table,td{ 
    border:1px solid black; 
} 
</style> 
<div style="overflow:auto;width:500px;border: 1px solid red"> 

<table> 
<tr> 
    <td style="width:100px">a</td> 
    <td style="width:100px">a</td> 
    <td style="width:100px">a</td> 
    <td style="width:100px">a</td> 
    <td style="width:100px">a</td> 
    <td style="width:100px">a</td> 
    <td style="width:100px">a</td> 
</tr> 
</table> 

</div> 

Je peux contourner ce problème en réglant la table sur une largeur supérieure à la div. Mais la table a un nombre variable de colonnes donc je préfère ne pas le faire.

Y a-t-il un meilleur moyen?

Merci pour vos suggestions.

+0

Hmmm ... Je ne vois vraiment pas une solution facile pour celle-ci. Le point des tables est pour que le navigateur fasse tout le travail lourd (c.-à-d. Redimensionner des cellules, ajuster la table dans n'importe quel espace disponible, etc.) pour vous, donc si vous ne définissez pas une taille, alors le navigateur forcer la table dans cet espace pour vous. –

Répondre

0

Vous allez avoir défini une largeur explicite sur la table (utilisez CSS pour cela bien sûr). Vraisemblablement, si les colonnes sont générées dynamiquement, il ne serait pas trop difficile non plus de calculer la largeur de façon dynamique. Vous devrez utiliser CSS en ligne, mais bon, c'est un bon cas pour cela.

+0

Eh bien, les largeurs explicites c'est alors ... – Chris

1

Vous pouvez utiliser

<table> 
<tr> 
    <td style="min-width:100px;max-width:100px">a</td> 
    <td style="min-width:100px;max-width:100px">a</td> 
    <td style="min-width:100px;max-width:100px">a</td> 
    <td style="min-width:100px;max-width:100px">a</td> 
    <td style="min-width:100px;max-width:100px">a</td> 
    <td style="min-width:100px;max-width:100px">a</td> 
    <td style="min-width:100px;max-width:100px">a</td> 
</tr> 
</table> 

Mais je pourrais avoir des problèmes pour IE 8. <

+0

Malheureusement je dois supporter IE6 et IE7 aussi – Chris

+0

Oui, ça pourrait être une bonne idée ... alors utilisez la solution de colithium;) –