68 votes

Tableaux Bootstrap débordant de longs textes non espacés

J'utilise Bootstrap et j'ai un tableau avec quelques colonnes, dont la dernière contient parfois un long texte sans espace. J'ai remarqué que, sous certaines tailles d'écran, le tableau débordait de son div parent et créait un chevauchement moche avec son tableau frère.

J'ai joué avec et je pense que le problème est lié au fait que le texte n'est pas espacé. J'ai créé un jsfiddle qui démontre ce que je veux dire.

Comme vous pouvez le constater, le tableau en haut à gauche se comporte bien et s'agrandit simplement verticalement pour accueillir plus de texte. Cependant, le tableau inférieur gauche entraîne un débordement sur la droite en raison du long texte non espacé et la colonne de droite du tableau inférieur gauche se retrouve "sous" son frère.

Quelqu'un a-t-il une idée de la façon dont je peux régler ce problème pour que le texte très long soit coupé ou partiellement divisé sur une nouvelle ligne ?

127voto

albertedevigo Points 6964
.the-table {
    table-layout: fixed;
    word-wrap: break-word;
}

Déclassé (i.e. word-wrap)

Ajoutez les styles suivants à votre <table>

.the-table {
    table-layout: fixed;
    over-flow: break-word;
}

Vous pouvez ensuite adapter votre mise en page via le CSS comme vous le souhaitez.

0 votes

Pour info seulement, j'ai lu quelque part que le word-wrap était supprimé, utilisez over-flow:break-word.

0 votes

@unidha Je pense que vous avez tort. Vous pouvez vérifier le projet de travail ou le projet d'éditeur . Ce over-flow la propriété n'existe pas. La propriété dont nous parlons s'appelle overflow-wrap ou word-wrap comme solution de rechange. Pourriez-vous fournir votre source ?

0 votes

Cet article ne fait que confirmer ce que j'ai dit. Et il ne mentionne pas over-flow propriété. Je pense que vous l'avez mal interprété.

26voto

Kate Kasinskaya Points 260

Cela fonctionne sans forcer la mise en page du tableau à être fixé Il suffit de l'ajouter à td ou à tout autre

.is-breakable {
  word-break: break-word;
}

6voto

Justin Ipson Points 381

J'avais des difficultés à faire fonctionner ces solutions dans Internet Explorer.

J'ai utilisé le style suivant pour que cela fonctionne enfin.

<td style="word-break: break-all">

1voto

Rahul Godara Points 13

Vous pouvez utiliser le css ci-dessous. Cela va envelopper le texte et appliquer ... à la fin du texte.

Par exemple, le texte This_is_a_large_text sera changé en This_is_a_lar...

td {
  max-width: 120px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

Vous pouvez également ajouter une info-bulle pour afficher la valeur complète du texte.

<td data-toggle="tooltip" title="${text}">${text}</td>

0voto

La réponse d'Albers a fait l'affaire pour moi

.the-table {
 table-layout: fixed;
 word-wrap: break-word;
}

Dans le JS pour le charger dynamiquement, ajoutez

 $("#"  + tableName ).addClass('the-table'); 

J'espère que ça aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X