J'ai une cellule de tableau que j'aimerais toujours avoir une largeur particulière. Cependant, cela ne fonctionne pas avec de grandes chaînes de texte non espacé. Voici un cas de test:
td {
border: solid green 1px;
width: 200px;
overflow: hidden;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
Comment faire pour que le texte soit coupé au bord de la boîte, plutôt que de faire agrandir la boîte?
vertical-align:middle
et même l'ajouter au DIV ne résout pas le problème.Appliquez CSS
table-layout:fixed;
(et parfoiswidth:<any px or %>
) au TABLE et auwhite-space: nowrap; overflow: hidden;
style sur TD. Ensuite, définissez les largeurs CSS sur le bon éléments de cellule ou de colonne .De manière significative, les largeurs de colonne de tableau à disposition fixe sont déterminées par les largeurs de cellule dans la première ligne du tableau. S'il y a des éléments TH dans la première ligne et que les largeurs sont appliquées à TD (et non à TH), alors la largeur ne s'applique qu'au contenu du TD (l'espace blanc et le débordement peuvent être ignorés); les colonnes du tableau se répartiront uniformément quelle que soit la largeur TD définie (car il n'y a aucune largeur spécifiée [sur TH dans la première ligne]) et les colonnes auront des largeurs égales [calculées]; le tableau ne recalculera pas la largeur de la colonne en fonction de la largeur TD dans les lignes suivantes. Définissez la largeur des premiers éléments de cellule que le tableau rencontrera.
Le moyen le plus sûr de définir des largeurs de colonne est également d'utiliser des balises
<COLGROUP>
et<COL>
dans le tableau avec la largeur CSS définie sur chaque COL de largeur fixe. Le CSS lié à la largeur des cellules est plus agréable lorsque le tableau connaît à l'avance les largeurs de colonne.la source
Je ne suis pas familier avec le problème spécifique, mais vous pouvez coller un div, etc. à l'intérieur du td et définir un débordement à ce sujet.
la source
Eh bien, voici une solution pour vous mais je ne comprends pas vraiment pourquoi cela fonctionne:
À savoir, envelopper le contenu de la cellule dans un div.
la source
overflow:hidden
peut être retiré detd
, et la largeur dudiv
peut être réglée à 100% afin qu'il fonctionne avec n'importe quelletd
largeur (y compris celles de taille automatique!)La meilleure solution est de mettre un div dans une cellule de tableau avec une largeur nulle. Les cellules du tableau Tbody hériteront de leurs largeurs des largeurs définies dans la tête. Position: la marge relative et négative devrait faire l'affaire!
Voici une capture d'écran: https://flic.kr/p/nvRs4j
la source
Vous devrez définir les attributs de style de la table:
width
ettable-layout: fixed;
laisser le 'overflow: hidden;' l'attribut fonctionne correctement.Imo cela fonctionne mieux que d'utiliser des divs avec le
width
attribut style, en particulier lors de son utilisation pour des calculs de redimensionnement dynamique, la table aura un DOM plus simple qui rend la manipulation plus facile car les corrections pour le remplissage et la marge ne sont pas nécessairesDe plus, vous ne devez pas définir la largeur pour toutes les cellules, mais uniquement pour les cellules de la première ligne.
Comme ça:
la source
J'ai juste eu un problème similaire et j'ai dû utiliser l'
<div>
intérieur de la<td>
première (la solution de John MacIntyre ne fonctionnait pas pour moi pour diverses raisons).Notez bien que ce
<td><div>...</div></td>
n'est pas un emplacement valide pour un div, donc j'utilise à la place un ensemble<span>
avecdisplay:block;
. Il valide bien maintenant et fonctionne.la source
Solution la plus simple et la plus simple qui fonctionne:
la source
pour faire plus simple je propose de mettre une zone de texte dans le td qui gère automatiquement le débordement
<td><textarea autofocus>$post_title</textarea></td>
besoin d'être amélioré
la source
affiche 123456
la source