485 votes

Comment forcer un saut de ligne dans un mot long dans un DIV ?

Ok, c'est vraiment déroutant. J'ai du contenu à l'intérieur d'un div comme ceci :

<div style="background-color: green; width: 200px; height: 300px;">

Thisisatest.Thisisatest.Thisisatest.Thisisatest.Thisisatest.Thisisatest.

</div>

Cependant, le contenu déborde du DIV (comme prévu) car le "mot" est trop long.

Comment puis-je forcer le navigateur à "casser" le mot lorsque cela est nécessaire pour faire tenir tout le contenu à l'intérieur ?

0 votes

Jetez un coup d'œil à cette question : stackoverflow.com/questions/2046530/

714voto

Chi Points 8991

Utilisez word-wrap:break-word;

Il fonctionne même dans IE6, ce qui est une agréable surprise.


word-wrap: break-word a été remplacé par overflow-wrap: break-word; qui fonctionne dans tous les navigateurs modernes. IE, étant un navigateur mort, s'appuiera toujours sur la version dépréciée et non standard de word-wrap à la place.

Utilisations existantes de word-wrap fonctionne encore aujourd'hui puisqu'il s'agit d'un alias pour overflow-wrap selon le cahier des charges.

80 votes

En fait, le word-wrap est une invention d'IE. Il n'est donc pas surprenant qu'il fonctionne dans IE :)

2 votes

Pour que cela fonctionne dans un tableau, vous devrez peut-être appliquer l'attribut table-layout: fixed; à la table

42 votes

word-wrap: break-word n'a pas fonctionné pour moi mais word-break: break-word comme @rahul l'a suggéré ci-dessous a fonctionné.

146voto

rahul Points 84185

Je ne suis pas sûr de la compatibilité du navigateur

word-break: break-all;

Vous pouvez également utiliser le <wbr> étiquette

<wbr> (rupture de mot) signifie : "Le navigateur peut insérer un saut de ligne ici, s'il souhaite." Si le navigateur ne pense pas qu'un saut de ligne est nécessaire, rien rien ne se passe.

28 votes

Sachez que word-break : break-all ; cassera les mots au milieu s'il peut encore contenir des caractères sur une ligne avec d'autres mots avant, ce qui peut ne pas être le résultat souhaité, tandis que word-wrap : break-word ; déplace les mots sur une nouvelle ligne et ne casse le mot que s'il est trop long pour tenir sur sa propre ligne dans le conteneur. Exemple : jsfiddle.net/4AKhn/1

0 votes

Break-all casse tout. Peut être utilisé avec des classes spécifiques qui ont de longues URL, mais pas avec BODY ou P.

0 votes

C'est tout à fait acceptable (et souhaité) lorsque vous essayez d'afficher quelque chose comme une requête URI dans une cellule d'un tableau de logs, et que vous avez besoin qu'il arrête de casser tout le tableau avec une longue cellule géante. La rupture au milieu d'un "mot" est souhaitée ;) Alors que la réponse acceptée ne fait rien à cet égard.

110voto

Cela pourrait être ajouté à la réponse acceptée pour une solution "multi-navigateur".

Sources :

0 votes

Je l'ai obtenu sur Chrome/Opera et Safari, mais toujours pas sur Firefox et IE. Avec ceci, j'ai résolu le problème avec Firefox, mais IE dépasse toujours le conteneur (j'ai un long nom de fichier composé uniquement de caractères alphanumériques).

1 votes

Bonjour Kamafeather, je ne suis pas sûr, mais si c'est bien le nom de fichier long que vous essayez de casser, le contexte complet (navigateur, code html-css) pourrait être utile pour vous aider davantage. Peut-être pourriez-vous créer une autre question avec votre situation.

0 votes

Veuillez noter que cela casse des mots à des endroits non grammaticaux.

34voto

Simon Points 4467

J'étais justement en train de chercher le même problème sur Google, et j'ai posté ma solution finale. ICI . C'est également pertinent pour cette question.

Vous pouvez le faire facilement avec un div en lui donnant le style word-wrap: break-word (et vous devrez peut-être aussi définir sa largeur).

div {
    word-wrap: break-word;         /* All browsers since IE 5.5+ */
    overflow-wrap: break-word;     /* Renamed property in CSS3 draft spec */
    width: 100%;
}

Cependant, pour les tables vous devez également vous inscrire : table-layout: fixed . Cela signifie que les largeurs des colonnes ne sont plus fluides, mais sont définies sur la base des largeurs des colonnes de la première ligne uniquement (ou via des largeurs spécifiées). Plus d'informations ici .

Exemple de code :

table {
    table-layout: fixed;
    width: 100%;
}

table td {
    word-wrap: break-word;         /* All browsers since IE 5.5+ */
    overflow-wrap: break-word;     /* Renamed property in CSS3 draft spec */
}

1 votes

Merci pour la solution des tableaux ;) Cependant, je ne comprends pas bien pourquoi le mot "break" ne peut pas être utilisé avec la mise en page automatique. Une suggestion ?

0 votes

@ondObno Oui, je ne suis pas sûr de la raison technique, mais plusieurs navigateurs semblent se comporter de cette façon. Peut-être est-ce dû au fait que les mots super longs perturbent les calculs nécessaires pour déterminer la largeur de chaque colonne.

0 votes

Réglage de width: 100%; C'est le seul moyen de faire fonctionner le système sur FF et Chrome !

7voto

Babiker Points 7214

CSS word-wrap:break-word; , testé dans FireFox 3.6.3

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