2009-11-27 7 views
22

Je vais avoir ce balisage:CSS: Correction hauteur de ligne

<style> 
    table 
    { 
     border:1px solid black; 
     width:400px; 
     height:300px; 
     border-collapse:collapse; 
    } 
    table tbody 
    { 
     border:1px solid red; 
    } 
    table td 
    { 
     background:yellow; 
     padding:10px; 
     border-bottom:1px solid green; 
     height:20px; 
    } 
</style> 


<table> 
<tbody> 
    <tr><td>test</td></tr> 
    <tr><td>test</td></tr> 
</tbody> 
</table> 

Ce que j'ai besoin est que les lignes ne seront pas étirer en hauteur. Y a-t-il un moyen d'avoir une hauteur de rangée fixe?

+0

Que voulez-vous faire avec un contenu plus grand que la hauteur de ligne fixe? –

+1

Utilisez min-height, et espérons que les utilisateurs n'ont pas IE6. – tahdhaze09

+1

@tad: min-height fait exactement le contraire de ce qu'il a demandé. Notez également que max-height ne fonctionne pas correctement dans certaines circonstances sous IE8 sauf si vous utilisez le mode de compatibilité: http://edskes.net/ie8overflowandexpandingboxbugs.htm – diadem

Répondre

25

HTML Les hauteurs de ligne du tableau changent généralement proportionnellement à la hauteur de la table, si la hauteur de la table est supérieure à la hauteur de vos lignes. Étant donné que la table force la hauteur de vos lignes, vous pouvez supprimer la hauteur de la table pour résoudre le problème. Si ce n'est pas acceptable, vous pouvez également donner une hauteur explicite aux lignes, et ajouter une troisième ligne qui va auto taille à la hauteur de la table restante.

Une autre option dans CSS2 est la propriété Max-Height, bien qu'elle puisse conduire à un comportement étrange dans une table. http://www.w3schools.com/cssref/pr_dim_max-height.asp

.

+1

meilleur. répondre. difficile de régler la hauteur de la table causait tous mes problèmes, en supprimant ce fait pour génial. –

+2

+1 pour "vous pouvez également donner une hauteur explicite aux lignes, et ajouter une troisième ligne qui prendra la taille automatique à la hauteur restante de la table." –

4

Je ne l'ai pas essayé mais si vous mettez un div dans votre cellule de table de sorte qu'il aura des barres de défilement si nécessaire, alors vous pourriez insérer là, avec une hauteur fixe sur le div et il devrait garder votre table ramer à une hauteur fixe.

6

Vous pouvez également essayer cela, si c'est ce dont vous avez besoin:

<style type="text/css"> 
    .... 
    table td div {height:20px;overflow-y:hidden;} 
    table td.col1 div {width:100px;} 
    table td.col2 div {width:300px;} 
</style> 


<table> 
<tbody> 
    <tr><td class="col1"><div>test</div></td></tr> 
    <tr><td class="col2"><div>test</div></td></tr> 
</tbody> 
</table> 
23

ajouter simplement style="line-height:0" à chaque cellule. Cela fonctionne dans IE car il définit la hauteur de ligne du texte existant et inexistant à environ 19px et qui force les cellules à se développer verticalement dans la plupart des versions de IE. Indépendamment du fait que vous ayez ou non du texte, cela doit être fait pour que IE affiche correctement les lignes de moins de 20 px de haut.

+0

Cela vient de résoudre mon problème dans Chrome 30 aussi, j'essayais de faire un prendre la pleine taille de la cellule du tableau dans lequel il était sans vide –

+1

line-height 0 semble faire fonctionner le texte ensemble s'il essaie d'envelopper: http://jsfiddle.net/6wXd8/ – Kasapo