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.

Satya Kalluri
quelle

Antworten:

239

Versuche dies:

div {
    width: 200px;
    word-wrap: break-word;
}
Alan Haggai Alavi
quelle
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;
}
lukaserat
quelle
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.

Kim Stebel
quelle
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
Orr Siloni
quelle
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.

Kyle Dearle
quelle
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;
Amol
quelle
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).

Andrew Marais
quelle
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+ */
}
Zeitlos
quelle
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" 
Swapnil Godambe
quelle
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 .

Juraj Guniš
quelle
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.

Deshbanks
quelle
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.

Vladimir Salguero
quelle
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;
Wesson2
quelle
0

Versuche dies

div {display: inline;}
Michael Mulikita
quelle
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;
}
Rahul Wasnik
quelle
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%;
}
Rashid Iqbal
quelle
0

Versuchen:

overflow-wrap: break-word;
Eden Sharvit
quelle
-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;
aks
quelle
14
Dies ist identisch mit der obigen Antwort. Warum die Mühe?
Trgraglia