662 Stimmen

Zeilenumbruch in einer HTML-Tabelle

Ich habe mit word-wrap: break-word um Text einzuschließen div s und span s. In Tabellenzellen scheint es jedoch nicht zu funktionieren. Ich habe eine Tabelle eingestellt auf width:100% mit einer Zeile und zwei Spalten. Text in Spalten, obwohl mit dem obigen Stil versehen word-wrap nicht verpackt. Dadurch wird der Text über die Grenzen der Zelle hinausgeschoben. Dies geschieht in Firefox, Google Chrome und Internet Explorer.

So sieht die Quelle aus:

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>

Das lange Wort oben ist größer als der Rahmen meiner Seite, aber es bricht nicht mit dem obigen HTML. Ich habe die folgenden Vorschläge ausprobiert, indem ich Folgendes hinzugefügt habe text-wrap:suppress y text-wrap:normal aber beides hat nicht geholfen.

0 Stimmen

Hard-Hyphen hinzufügen. <tr> <td style="text-wrap:normal;word-wrap:break-word"> Dies ist ein Vorspruch. </td> </tr>

0 Stimmen

Leider stammt der darin enthaltene Text aus nutzergenerierten Inhalten. Natürlich könnte ich ihn vorverarbeiten und den Bindestrich hinzufügen, aber ich hatte gehofft, es gäbe einen besseren Weg.

0 Stimmen

Ich entschuldige mich für die Verwendung des Wortes "harter Bindestrich". In HTML wird der einfache Bindestrich durch das Zeichen "-" (- oder -) dargestellt. Der weiche Bindestrich wird durch die Zeicheneinheit ­ ( oder ) dargestellt.

705voto

Marc Stober Punkte 9810

Im Internet Explorer funktioniert das Folgende bei mir. Beachten Sie die Hinzufügung des table-layout:fixed CSS-Attribut

td {
  border: 1px solid;
}

<table style="table-layout: fixed; width: 100%">
  <tr>
    <td style="word-wrap: break-word">
      LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongWord
    </td>
  </tr>
</table>

0 Stimmen

@ewomac ja, manchmal muss ich einfach die VS2010-Fehler über HTML/CSS ignorieren, wenn ich weiß, dass es im Browser funktioniert.

0 Stimmen

Ich zeige die Seite NIEMALS in VS an und kodiere das Markup manuell. Wenn es zu kompliziert ist, braucht die Seite wahrscheinlich Arbeit und VS injiziert einfach zu viel und auf eine Art und Weise, die ich nicht möchte, um meine Seite eng und sauber zu halten.

3 Stimmen

@marc!! Kumpel, vielen Dank dafür. Ich war mit dem Aufbau einer mobilen Version einer Client-Website, die Tabellen verwendet, und ich hatte Schwierigkeiten, dies zu arbeiten! table-layout:fixed hat den Trick!

211voto

Pratik Stephen Punkte 1995
<td style="word-break:break-all;">longtextwithoutspace</td>

o

<span style="word-break:break-all;">longtextwithoutspace</span>

1 Stimmen

Ich kann bestätigen, dass Pratiks Ansatz auch unter Safari auf iOS (iPhone) funktioniert.

0 Stimmen

Um das Problem mit einigen kurzen und einigen langen Wörtern zu umgehen, könnten Sie den Text vorverarbeiten und nur lange Wörter (z. B. > 40 Zeichen) in die <span> .

9 Stimmen

Dies wird von Firefox und Opera nicht unterstützt

169voto

Rick Grundy Punkte 1617

Das ist weit hergeholt, aber überprüfen Sie es mit Firebug (oder ähnlich), damit Sie nicht versehentlich die folgende Regel erben:

white-space:nowrap;

Dies kann Folgendes außer Kraft setzen das von Ihnen festgelegte Zeilenumbruchverhalten.

0 Stimmen

Das wurde geerbt und hat mir den Wortschwall genommen

1 Stimmen

@RickGrundy Was stellen Sie um, wenn Sie dieses Problem haben?

16 Stimmen

@cokedude Ich bin viel zu spät hier, aber es ist white-space:normal;

62voto

psychotik Punkte 36639

Es hat sich herausgestellt, dass es keine gute Möglichkeit gibt, dies zu tun. Am nächsten kam ich ist das Hinzufügen von "overflow:hidden;" zum div um die Tabelle und verlieren den Text. Die wirkliche Lösung scheint jedoch zu sein, die Tabelle wegzulassen. Mit Divs und relativer Positionierung konnte ich den gleichen Effekt erzielen, ohne das Erbe von <table>

2015 UPDATE: Dies ist für diejenigen wie mich, die diese Antwort wollen. Nach 6 Jahren funktioniert dies, dank aller Mitwirkenden.

* { /* this works for all but td */
  word-wrap:break-word;
}

table { /* this somehow makes it work for td */
  table-layout:fixed;
  width:100%;
}

0 Stimmen

Seltsam für mich, als ich den Kommentar entfernte // this works for all but td funktioniert es.

1 Stimmen

Beachten Sie, dass sich dadurch das Layout von Tabellen grundlegend ändert, da die automatische Spaltengrößenanpassung, die normalerweise erfolgt, entfällt. Nachschlagen table-layout für mehr.

33voto

loungerdork Punkte 981

Wie bereits erwähnt, wird der Text innerhalb von div funktioniert fast. Sie müssen nur den width der div was für statische Layouts von Vorteil ist.

Dies funktioniert mit FF 3.6, IE 8 und Chrome.

<td>
  <div style="width: 442px; word-wrap: break-word">
    <!-- Long Content Here-->
  </div>
</td>

2 Stimmen

Sie können hinzufügen min-width: 100% zusammen mit width zur Sicherstellung der div nimmt die gesamte Zelle ein.

0 Stimmen

Ich möchte einen Wortumbruch mit Komma (,) durchführen. Wie Long,Long,Long,Long,Long . Ich möchte dies nach einem Komma (,) einschließen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X