Wie kann man Text in HTML umbrechen?


184

Wie kann Text, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaader die Breite eines div(sagen wir 200px) überschreitet , umbrochen werden?

Ich bin offen für jede Art von Lösung wie CSS, jQuery usw.

Antworten:


239

Versuche dies:

div {
    width: 200px;
    word-wrap: break-word;
}

1
Bin ich falsch oder ist Zeilenumbruch eine CSS3-Eigenschaft?
Gab Royer

13
Es ist CSS3, aber es funktioniert in fast allen gängigen Browsern, einschließlich IE5.5 -> 9 - caniuse.com/#search=word-wrap
Jon Hadley

32
Beim Zeilenumbruch: Umbruchwort; funktioniert nicht try word-break: break-all; / * dieser ist ein Mörder * /
Redochka

@redochka Aber wenn man es word-break: break-all;dann in normalem Text verwendet, bricht es Wörter in der Mitte, was hässlich ist ... Können wir nicht eine Mischung aus beiden Verhaltensweisen haben?
Pawamoy

5
Wichtig: Es ist word-break: break-allund nicht word-wrap: break-all. Leichter Fehler zu machen
Simon_Weaver

58

Stellen Sie auf Bootstrap 3 sicher, dass der Leerraum nicht als "Nowrap" festgelegt ist.

div {
  width: 200px;
  word-break: break-all;
  white-space: normal;
}

Toll. Ich habe versucht, word-break: break-all auf einem Twitter Bootstrap 3-Panel zu verwenden, aber es hat nie funktioniert. Hinzufügen von Leerzeichen: Normal war die Lösung.
Coolboyjules

5
Schön, ich brauchte es white-space: normal;auch, bevor es funktionierte.
Radbyx

56

Sie können einen weichen Bindestrich wie folgt verwenden:

aaaaaaaaaaaaaaa­aaaaaaaaaaaaaaa

Dies wird als angezeigt

aaaaaaaaaaaaaaa-
aaaaaaaaaaaaaaa

wenn die enthaltende Box nicht groß genug ist oder als

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

wenn es so ist.


18
Aber woher weißt du, wo du das hinstellen sollst ­?
Kostas

Sie setzen es in lange Wörter, wo sie geteilt werden können. Sie können diese Informationen sogar automatisch aus einem geeigneten Wörterbuch abrufen.
Kim Stebel

4
Aber wie wäre es mit Kauderwelsch wie im Beispiel? Ist es in Ordnung zu verwandeln aaaaaa...aaaaain a­a­a­a­a­a­a...a­a­a­a?
Kostas

19
Genau das, wonach ich gesucht habe. Ich mag es, dass es zu schüchtern ist, um irgendetwas zu tun, bis es muss
;-)

3
Dies funktioniert gut, wenn das zu verpackende Wort ein übermäßig langer.java.package.name oder eine ähnliche Zeichenfolge mit vielen Punkten ist. dann können Sie die & schüchtern hinzufügen; nach jedem Punkt.
Dokaspar

28
   div {
    // set a width
    word-wrap: break-word
}

Die ' word-wrap' Lösung funktioniert nur in IE und unterstützten Browsern CSS3.

Die beste browserübergreifende Lösung besteht darin, Ihre serverseitige Sprache (PHP oder was auch immer) zu verwenden, um lange Zeichenfolgen zu finden und in regelmäßigen Abständen die HTML-Entität darin zu platzieren. ​ Diese Entität bricht die langen Wörter gut und funktioniert in allen Browsern.

z.B

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa​aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

8
"Platziere in regelmäßigen Abständen die HTML-Entität # 8203 darin", aber wenn du dann versuchst, den Text zu kopieren und irgendwo
einzufügen

9

Die einzige Funktion, die in IE, Firefox, Chrome, Safari und Oper funktioniert, wenn das Wort keine Leerzeichen enthält (z. B. eine lange URL), ist:

div{
    width: 200px;  
    word-break: break-all;
}

Ich fand das kugelsicher.


9

Das hat bei mir funktioniert

word-wrap: normal;
word-break: break-all;
white-space: normal;
display: block;
height: auto;
margin: 3px auto;
line-height: 1.4;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;

6

Eine andere Option ist auch:

div
{
   white-space: pre-line;
}

Dadurch werden alle Ihre div-Elemente in allen Browsern festgelegt, die CSS1 unterstützen (dies sind so ziemlich alle gängigen Browser bereits in IE 8).


Wenn Sie eine haben <pre>Element möchten Sie den Zeilenumbruch haben, das funktioniert und word-breakoder word-wrapnicht.
Pluto

4

Browserübergreifend

.wrap
{
    white-space: pre-wrap; /* css-3 */    
    white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
    white-space: -pre-wrap; /* Opera 4-6 */    
    white-space: -o-pre-wrap; /* Opera 7 */    
    word-wrap: break-word; /* Internet Explorer 5.5+ */
}

2

Fügen Sie dieses CSS dem Absatz hinzu.

style="width:420px; 
min-height:15px; 
height:auto!important; 
color:#666; padding: 1%; 
font-size: 14px; 
font-weight: normal;
word-wrap: break-word; 
text-align: left" 

2
Ich mag text-overflow:ellipsisgenauso wie der nächste Typ, aber es ist keine richtige Antwort auf diese Frage. Er möchte die Zeilen umbrechen und nicht den Überlauf abschneiden.
Spudley

1

Beispiel aus CSS-Tricks :

div {
    -ms-word-break: break-all;

    /* Be VERY careful with this, breaks normal words wh_erever */
    word-break: break-all;

    /* Non standard for webkit */
    word-break: break-word;

    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

Weitere Beispiele hier .


0

Eine serverseitige Lösung, die für mich funktioniert, ist: $message = wordwrap($message, 50, "<br>", true);Wo $messageist eine Zeichenfolgenvariable, die das Wort / die Zeichen enthält, die aufgelöst werden sollen? 50 ist die maximale Länge eines Segments und "<br>"der Text, den Sie alle (50) Zeichen einfügen möchten.


4
Diese Lösung funktioniert nicht, wenn das 50-fache der Zeichenbreite mehr als das erforderliche Maximum von 200 Pixel beträgt. Verwenden Sie einfach die
Zoomfunktion

0

Versuche dies

div{
  display: block;
  display: -webkit-box;
  height: 20px;
  margin: 3px auto;
  font-size: 14px;
  line-height: 1.4;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

Die Eigenschaft Textüberlauf: Auslassungspunkte hinzufügen ... und Linienklemme zeigen die Anzahl der Linien an.


0

Im HTML-Body versuchen Sie:

<table>
    <tr>
        <td>
            <div style="word-wrap: break-word; width: 800px">
                Hello world, how are you? More text here to see if it wraps after a long while of writing and it does on Firefox but I have not tested it on Chrome yet. It also works wonders if you have a medium to long paragraph. Just avoid writing in the CSS file that the words have to break-all, that's a small tip.
            </div>
        </td>
    </tr>
</table>

Versuchen Sie im CSS-Body:

background-size: auto;

table-layout: fixed;


0

Ich habe Bootstrap verwendet. Mein HTML-Code sieht aus wie ..

<div class="container mt-3" style="width: 100%;">
  <div class="row">
    <div class="col-sm-12 wrap-text">
      <h6>
        text content
      </h6>
    </div>
  </div>
</div>

CSS

.wrap-text {
     text-align:justify;
}

Bootstrap hat text-justifyKlasse, so können Sie es anstelle von.wrap-text
barbsan

0

Sie können dieses CSS verwenden

p {
  width: min-content;
  min-width: 100%;
}


-2

Verwenden Sie das word-wrap:break-wordAttribut zusammen mit der erforderlichen Breite. Geben Sie die Breite hauptsächlich in Pixel und nicht in Prozent an.

width: 200px;
word-wrap: break-word;

14
Dies ist identisch mit der obigen Antwort. Warum die Mühe?
Trgraglia
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.