657 Stimmen

CSS text-overflow in einer Tabellenzelle?

Ich möchte CSS text-overflow in einer Tabellenzelle verwenden, so dass der Text, wenn er zu lang ist, um auf einer Zeile zu passen, mit einem Auslassungszeichen abgeschnitten wird, anstatt auf mehrere Zeilen umgebrochen zu werden. Ist das möglich?

Ich habe es so versucht:

td {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

Aber das white-space: nowrap scheint den Text (und seine Zelle) kontinuierlich nach rechts auszudehnen und die Gesamtbreite der Tabelle über die Breite ihres Containers hinaus zu schieben. Ohne diese Eigenschaft jedoch wird der Text weiterhin auf mehrere Zeilen umgebrochen, wenn er den Rand der Zelle erreicht.

12 Stimmen

Tabellenzellen gehen mit overflow nicht gut um. Versuchen Sie, ein div in die Zelle zu setzen und dieses div zu stylen.

5voto

youngoldman Punkte 169

Es hat für mich funktioniert

table {
    width: 100%;
    table-layout: fixed;
}
td {
   text-overflow: ellipsis;
   white-space: nowrap;
}

5voto

Matt Lacey Punkte 8147

Für saubere autosized Tabellen mit Ellipsis

Wenn Sie die Tabellen-Tags loswerden können, hat modernes CSS eine meiner Meinung nach viel sauberere Lösung verfügbar: die Verwendung des grid-Layouts.

Sie brauchen einfach ein div oder ähnliches, um die Tabelle darzustellen, mit Zellen darin, z.B.:

  text
  text
  text
  text

Jetzt, wenn ich möchte, dass dies eine 2x2 Tabelle ist, dann ist es einfach eine Frage der Definition von zwei autosized Spalten für das Raster:

.table {
  display: grid;
  grid-template-columns: auto auto;
}

Für die Zellen benötigen Sie einfach ein paar mehr Zeilen CSS:

.cell {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

Fertig! Wenn Sie sicherstellen müssen, dass einige Spalten breiter sind als andere, funktionieren die fr-Einheiten oder andere verfügbare Optionen für die Spaltenvorlage gut.

.table {
  display: grid;
  grid-template-columns: auto auto;
}
.cell {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  border: 1px solid black;
}

  long long long long long long long long long long long long long long long long long long long long long long long long
  text
  text
  text

0 Stimmen

1 Stimmen

Das ist die einzige Lösung hier, die funktioniert, ohne die automatische Breite der Tabellenspalten durcheinander zu bringen.

0 Stimmen

Diese Lösung erfordert, dass Sie die Anzahl der Spalten in der Tabelle im Voraus kennen (d.h. die Eigenschaft grid-template-auto muss für jede Spalte in der Tabelle ein auto Schlüsselwort definieren). Wenn Ihre Tabelle dynamisch ist und Sie die Anzahl der Spalten im Voraus nicht kennen, müssen Sie einige CSS-Akrobatik betreiben, um es zum Laufen zu bringen. Eine mögliche Umgehungslösung wäre es, zu definieren: .table-col-2 { grid-template-columns: auto auto; } .table-col-5 { grid-template-columns: auto auto auto auto auto; } usw. und die richtige Klasse dynamisch im HTML zur Laufzeit anzuwenden. Aber es ist eine unordentliche Lösung.

-1voto

John Punkte 11373

XML

Ihr überlaufender Inhalt hier.

CSS

td div
{
 max-height: 30vh;
 overflow: auto;
}

Es ergibt keinen Sinn, mit dem Gesamten table für diesen sehr spezifischen Zweck herumzuspielen. Ja, manchmal ist es in Ordnung, ein zusätzliches Element hinzuzufügen, wenn Sie ausdrücklich daran arbeiten, nicht ein weiteres 600-divs-verschachteltes Twitter/Facebook "Entwickler" zu sein.

-7voto

Ryan O'Connell Punkte 1

Dies ist die Version, die in IE 9 funktioniert.

http://jsfiddle.net/s27gf2n8/

                Erste Reihe. Lorem Ipsum ist einfach ein Blindtext der Druck- und Satzindustrie. Lorem Ipsum ist seit den 1500er Jahren der Standard-Blindtext der Industrie, als ein unbekannter Drucker eine Galleyart von Typ nahm und sie durcheinander brachte, um ein Typmusterbuch zu erstellen. Es hat nicht nur fünf Jahrhunderte überlebt, sondern auch den Sprung in die elektronische Satztechnologie geschafft und bleibt im Wesentlichen unverändert. Es wurde in den 1960er Jahren mit der Veröffentlichung von Letraset-Blättern mit Lorem Ipsum-Passagen populär gemacht und in letzter Zeit auch mit Desktop-Publishing-Software wie Aldus PageMaker einschließlich Versionen von Lorem Ipsum.

                Obere rechte Zelle.

                Zweite Reihe - Lorem Ipsum ist einfach ein Blindtext der Druck- und Satzindustrie. Lorem Ipsum ist seit den 1500er Jahren der Standard-Blindtext der Industrie, als ein unbekannter Drucker eine Galleyart von Typ nahm und sie durcheinander brachte, um ein Typmusterbuch zu erstellen. Es hat nicht nur fünf Jahrhunderte überlebt, sondern auch den Sprung in die elektronische Satztechnologie geschafft und bleibt im Wesentlichen unverändert. Es wurde in den 1960er Jahren mit der Veröffentlichung von Letraset-Blättern mit Lorem Ipsum-Passagen populär gemacht und in letzter Zeit auch mit Desktop-Publishing-Software wie Aldus PageMaker einschließlich Versionen von Lorem Ipsum.

                Untere rechte Zelle.

7 Stimmen

A

als direktes Kind von ? Das scheint nicht richtig zu sein!

0 Stimmen

@michiel FYI - Browser können Divs unter Tabellen-Tags verarbeiten.

0 Stimmen

@RyanO'Connell, nur weil du kannst, bedeutet nicht, dass du solltest... gemäß der HTML-Spezifikation ist dies ungültig, unabhängig davon, ob Browser es rendern können oder nicht.

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