J'ai utilisé word-wrap: break-word
pour envelopper le texte en div
s et span
s. Cependant, il ne semble pas fonctionner dans les cellules du tableau. J'ai un tableau défini sur width:100%
, avec une ligne et deux colonnes. Le texte dans les colonnes, bien que stylisé avec ce qui précède word-wrap
, ne se termine pas. Cela fait que le texte dépasse les limites de la cellule. Cela se produit sur Firefox, Google Chrome et Internet Explorer.
Voici à quoi ressemble la source:
td {
border: 1px solid;
}
<table style="width: 100%;">
<tr>
<td>
<div style="word-wrap: break-word;">
Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong word
</div>
</td>
<td><span style="display: inline;">Short word</span></td>
</tr>
</table>
Le mot long ci-dessus est plus grand que les limites de ma page, mais il ne rompt pas avec le code HTML ci-dessus. J'ai essayé les suggestions ci-dessous d'ajouter text-wrap:suppress
et text-wrap:normal
, mais aucun n'a aidé.
html
css
html-table
psychotik
la source
la source
white-space: pre-wrap
developer.mozilla.org/en-US/docs/Web/CSS/white-spaceRéponses:
Ce qui suit fonctionne pour moi dans Internet Explorer. Notez l'ajout de l'
table-layout:fixed
attribut CSSla source
<colgroup>
, cela a corrigé cela pour moi.ou
la source
<span>
.Word-wrap
ne brisera les mots que lorsque cela sera nécessairetable-layout: fixed;
.Un long shot, mais revérifiez avec Firebug (ou similaire) que vous n'héritez pas accidentellement de la règle suivante:
Cela peut remplacer votre comportement de saut de ligne spécifié.
la source
white-space:normal;
Il s'avère qu'il n'y a aucun bon moyen de le faire. Le plus proche que je suis venu est d'ajouter "débordement: caché;" à la div autour de la table et perdre le texte. La vraie solution semble cependant être d'abandonner la table. En utilisant des divs et un positionnement relatif, j'ai pu obtenir le même effet, moins l'héritage de
<table>
MISE À JOUR 2015: C'est pour ceux comme moi qui veulent cette réponse. Après 6 ans, cela fonctionne, merci à tous les contributeurs.
la source
Comme mentionné, mettre le texte dans
div
presque fonctionne. Il vous suffit de préciser lewidth
dudiv
, ce qui est heureux pour les dispositions qui sont statiques.Cela fonctionne sur FF 3.6, IE 8, Chrome.
la source
min-width: 100%
avecwidth
pour vous assurer qu'ildiv
occupe toute la cellule.Long,Long,Long,Long,Long
. Je veux envelopper par après une virgule (,).Solution de contournement qui utilise le débordement et fonctionne bien avec une disposition de table normale + largeur de table 100%
https://jsfiddle.net/krf0v6pw/
HTML
CSS
Avantages:
overflow-wrap:break-word
au lieu deword-break:break-all
. Ce qui est mieux car il essaie d'abord de casser les espaces et ne coupe le mot que si le mot est plus grand que son conteneur.table-layout:fixed
nécessaire. Utilisez votre dimensionnement automatique habituel.width
ou fixemax-width
en pixels. Définissez%
le parent si nécessaire.Testé dans FF57, Chrome62, IE11, Safari11
la source
Changez votre code
à
Exemple
la source
break-word
en premier lieu.Problème avec
est que cela ne fonctionnera pas si bien quand le texte a des espaces, par exemple
Si le mot
andthenlongerwithoutspaces
tient dans la cellule du tableau sur une ligne maislong text with andthenlongerwithoutspaces
ne le fait pas, le mot long sera divisé en deux au lieu d'être encapsulé.Solution alternative: insérez U + 200B ( ZWSP ), U + 00AD ( trait d'union souple ) ou U + 200C ( ZWNJ ) dans chaque mot long après chaque disons 20e caractère (cependant, voir l'avertissement ci-dessous):
Avertissement : l'insertion de caractères supplémentaires de longueur nulle n'affecte pas la lecture. Cependant, cela affecte le texte copié dans le presse-papiers (ces caractères sont bien sûr également copiés). Si le texte du presse-papiers est utilisé ultérieurement dans une fonction de recherche de l'application Web ... la recherche va être interrompue. Bien que cette solution soit visible dans certaines applications Web bien connues, évitez si possible.
Avertissement : lors de l'insertion de caractères supplémentaires, vous ne devez pas séparer plusieurs points de code dans le graphème. Voir https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries pour plus d'informations.
la source
é
peuvent être écrits comme deux points de code). Nous entendons probablement vraiment des "graphèmes", mais je ne connais aucun langage qui rendrait insignifiant leur bouclage.Découvrez cette démo
Voici le lien à lire
la source
break-all
entraînera le navigateur à ignorer complètement les sauts de mots pour décider où placer les sauts de ligne, avec pour effet que même si votre cellule contient une prose normale sans mots très longs, vous vous retrouverez avec des sauts de ligne au milieu des mots. Ceci est généralement indésirable.Testé dans IE 8 et Chrome 13.
Cela entraîne le tableau à s'adapter à la largeur de la page et chaque colonne à occuper 50% de la largeur.
Si vous préférez que la première colonne occupe plus de la page, ajoutez un
width: 80%
autd
comme dans l'exemple suivant, en remplaçant 80% par le pourcentage de votre choix.la source
La seule chose à faire est d'ajouter de la largeur à
<td>
l'<div>
intérieur ou à l' intérieur en<td>
fonction de la disposition que vous souhaitez réaliser.par exemple:
ou
la source
La réponse qui a remporté la prime est correcte, mais cela ne fonctionne pas si la première ligne du tableau a une cellule fusionnée / jointe (toutes les cellules ont une largeur égale).
Dans ce cas, vous devez utiliser les balises
colgroup
etcol
pour l'afficher correctement:la source
la source
p
dans une cellule de tableau qui n'a pas de largeur de pixel fixe finira presque certainement parp
déborder ou ne pas remplir la cellule de tableau.Il semble que vous devez définir
word-wrap:break-word;
un élément de bloc (div
), avec une largeur spécifiée (non relative). Ex:ou en utilisant
word-break:break-all
la suggestion d'Abhishek Simon.la source
Cela fonctionne pour moi:
Et l'attribut de table est:
la source
table-layout: fixed
, mais il y a déjà une réponse beaucoup plus ancienne qui le suggère, donc cette réponse n'ajoute aucune nouvelle information.Si vous n'avez pas besoin d'une bordure de table, appliquez ceci:
la source
table-layout: fixed
; celui-ci n'ajoute rien de nouveau à la page.J'ai trouvé une solution qui semble fonctionner dans Firefox, Google Chrome et Internet Explorer 7-9. Pour faire une disposition de table à deux colonnes avec du texte long d'un côté. J'ai cherché partout un problème similaire, et ce qui a fonctionné dans un navigateur a cassé l'autre, ou ajouter plus de balises à une table semble être un mauvais codage.
Je n'ai PAS utilisé de table pour cela. DL DT DD à la rescousse. Au moins pour corriger une mise en page à deux colonnes, c'est essentiellement une configuration de glossaire / dictionnaire / signification de mot.
Et un style générique.
En utilisant le retour à la ligne flottant et la marge à gauche, j'ai obtenu exactement ce dont j'avais besoin. Je pensais juste partager cela avec d'autres, peut-être que cela aidera quelqu'un d'autre avec une mise en page de style de définition à deux colonnes, avec des difficultés à boucler les mots.
J'ai essayé d'utiliser le retour automatique à la ligne dans la cellule du tableau, mais cela ne fonctionnait que dans Internet Explorer 9 (et Firefox et Google Chrome bien sûr), essayant principalement de réparer le navigateur Internet Explorer cassé ici.
la source
Les tableaux sont encapsulés par défaut, assurez-vous donc que l'affichage des cellules du tableau est
table-cell
:la source
style = "table-layout: fixed; width: 98%; word-wrap: break-word"
Démo - http://jsfiddle.net/Ne4BR/749/
Cela a très bien fonctionné pour moi. J'avais de longs liens qui feraient dépasser le tableau à 100% sur les navigateurs Web. Testé sur IE, Chrome, Android et Safari.
la source
table-layout: fixed
".Une solution qui fonctionne avec Google Chrome et Firefox (non testée avec Internet Explorer) consiste à définir
display: table-cell
comme élément de bloc.la source
Vous pouvez l'essayer si cela vous convient ...
Mettez une zone de texte à l'intérieur de votre td et désactivez-la avec la couleur de fond blanc et définissez son nombre de lignes.
la source