Überlauf: versteckte Punkte am Ende

204

Nehmen wir an, ich habe eine Zeichenfolge " Ich mag dicke Ärsche und ich kann nicht lügen " und ich schneide sie mit overflow:hidden, so dass sie ungefähr so ​​aussieht:

Ich mag dicke Ärsche und ich kann nicht

Text abschneiden. Ist es möglich, dies so anzuzeigen:

Ich mag dicke Ärsche und ich kann nicht ...

mit CSS?

Mannicken
quelle
46
Ist diese Frage ein Trick, um das Lied zu promoten?
Cyril Gupta
12
@ CyrilGupta Entschuldigung für die späte Antwort. Ich musste ins Badezimmer laufen. Um Ihre Frage zu beantworten ... Ja
Joe Phillips

Antworten:

279

Sie können einen Textüberlauf verwenden: Auslassungspunkte; was laut caniuse von allen gängigen Browsern unterstützt wird.

Hier ist eine Demo zu jsbin.

.cut-text { 
  text-overflow: ellipsis;
  overflow: hidden; 
  width: 160px; 
  height: 1.2em; 
  white-space: nowrap;
}
<div class="cut-text">
I like big buts and I can not lie.
</div>

Joe Phillips
quelle
Dies schien in Firefox 15.0.1 zu funktionieren: w3schools.com/cssref/tryit.asp?filename=trycss3_text-overflow
Jace
Ja, es scheint in neueren Versionen zu funktionieren. Offensichtlich ist diese Antwort zu diesem Zeitpunkt einige Jahre alt.
Joe Phillips
Firefox begann dies ab Version 7 zu unterstützen, die in der zweiten Hälfte des Jahres 2011 veröffentlicht wurde.
Richard Ev
1
Ich kann meinen gesunden Menschenverstand verwenden, um anhand der Stimmen und Kommentare zu sagen, dass diese Antwort "richtig" ist. In der Realität sehe ich jedoch nicht, wie diese Antwort "richtig" ist. Ich habe beide overflow: hidden;und text-overflow: ellipsis;in einem <p>Element (dh einem Blockelement) verwendet und ...am Ende kein gefunden (natürlich stelle ich sicher, dass es tatsächlich überläuft). Ich habe dies auch ohne das overflow: hidden;Teil versucht , und auch mit einem <span>Element innerhalb des <p>Elements, in dem das <p>Element hatte overflow: hidden;und das <span>hatte. text-overflow: ellipsis;Egal wie ich es versuche, dies ist ein Fehler.
VoidKing
2
Nun, ich glaube ich kenne das Problem. Ich versuche, den Überlauf basierend auf zu beschränken, max-heightso dass ich nicht white-space:aufnowrap
VoidKing
88

Überprüfen Sie das folgende Snippet auf Ihr Problem

div{
  width : 100px;
  overflow:hidden;
  display:inline-block;
  text-overflow: ellipsis;
  white-space: nowrap;
}
<div>
    The Alsos Mission was an Allied unit formed to investigate Axis scientific developments, especially nuclear, chemical and biological weapons, as part of the Manhattan Project during World War II. Colonel Boris Pash, a former Manhattan P
</div>

Arjun
quelle
4
up's zum Hinzufügen von "white-space: nowrap;" was in einigen Fällen erforderlich sein könnte
Leo
2
Wie wird der Text so angezeigt, dass 2 Zeilen angezeigt werden?
Martian2049
1
@ Matian2040 können Sie anpassen, indem Sie versteckte Stile mit fester Höhe und Überlauf angeben.
Arjun
1
Oh, ich verstehe. Ich habe es versucht. Es scheint jedoch, dass zwei Zeilen bedeuten, dass es am Ende kein ... geben wird.
Martian2049
1
display: inline-block;war die fehlende Komponente für mich. Danke dir.
Seth
18

Versuchen Sie dies, wenn Sie die Linien auf 3 beschränken möchten und nach drei Linien die Punkte erscheinen. Wenn wir die Linien vergrößern möchten, ändern Sie einfach den Wert für -wekkit-line-clamp und geben Sie die Breite für die div-Größe an.

div {
   display: -webkit-box;
   -webkit-line-clamp: 3;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
}
Nagendra Matala
quelle
Entschuldigung, ich bin mir nicht sicher, wie ich deine Worte so entfernt habe!
Alec
funktioniert gut auf Chrome, aber beachten Sie, dass dies auf Firefox
Ken Bigler
Wie mache ich das in einem anderen Browser, sagen wir Firefox? Bearbeiten: stackoverflow.com/questions/33058004/…
user3187724 vor
17

Hoffentlich ist es hilfreich für Sie:

.text-with-dots {
    display: block;
    max-width: 98%;
    white-space: nowrap;
    overflow: hidden !important;
    text-overflow: ellipsis;
}
<div class='text-with-dots'>Some texts here Some texts here Some texts here Some texts here Some texts here Some texts here </div>

Vu Phan
quelle
15

Ja, über die text-overflowEigenschaft in CSS 3. Vorsichtsmaßnahme: Sie wird in Browsern noch nicht allgemein unterstützt.

ceejayoz
quelle
3
Die Browserunterstützung ist ab
Simon East
1
Ah, Sie sind der Grund, warum diese Frage drei Jahre später auftauchte.
Herr Lister
8

In Bootstrap 4 können Sie eine .text-truncateKlasse hinzufügen , um den Text mit einem Auslassungszeichen abzuschneiden.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<!-- Inline level -->
<span class="d-inline-block text-truncate" style="max-width: 190px;">
  I like big butts and I cannot lie
</span>

Penny Liu
quelle
6
<style>
    .dots
    {
        display: inline-block;
        width: 325px;
        white-space: nowrap;
        overflow: hidden !important;
        text-overflow: ellipsis;
    }

    .dot
    {
        display: inline-block;
        width: 185px;
        white-space: nowrap;
        overflow: hidden !important;
        text-overflow: ellipsis;
    }
</style>
Cuteboy_Max
quelle
3

Die meisten Lösungen verwenden hier die statische Breite. Aber manchmal kann es aus bestimmten Gründen falsch sein.

Beispiel: Ich hatte eine Tabelle mit vielen Spalten. Die meisten von ihnen sind schmal (statische Breite). Die Hauptspalte sollte jedoch so breit wie möglich sein (abhängig von der Bildschirmgröße).

HTML:

<table style="width: 100%">
  <tr>
    <td style="width: 60px;">narrow</td>
    <td>
      <span class="cutwrap" data-cutwrap="dynamic column can have really long text which can be wrapped on two rows, but we just need not wrapped texts using as much space as possible">
        dynamic column can have really long text which can be wrapped on two rows
        but we just need not wrapped texts using as much space as possible
      </span>
    </td>
  </tr>
</table>

CSS:

.cutwrap {
  position: relative;
  overflow: hidden;
  display: block;
  width: 100%;
  height: 18px;
  white-space: normal;
  color: transparent !important;
}
.cutwrap::selection {
  color: transparent !important;
}
.cutwrap:before {
  content: attr(data-cutwrap);
  position: absolute;
  left: 0;
  right: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #333;
}
/* different styles for links */
a.cutwrap:before {
  text-decoration: underline;
  color: #05c;
}
Maju
quelle
3
<!DOCTYPE html>
<html>
<head>
<style>
.cardDetaileclips{
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 3; /* after 3 line show ... */
    -webkit-box-orient: vertical;
}
</style>
</head>
<body>
<div style="width:100px;">
  <div class="cardDetaileclips">
    My Name is Manoj and pleasure to help you.
  </div>
</div> 
</body>
</html>
Manoj Patel
quelle
-1

Text beim Laden ausblenden und beim Hover anzeigen

<span class="hide-text"> How to hide text by dots and show text on hover</span>

.hide-text {
    width: 70px;
    display: inline-block;
    white-space: nowrap;
    overflow: hidden !important;
    text-overflow: ellipsis;
  }

  span:hover {
     white-space: unset;
     text-overflow: unset;
  }
Rohit Parte
quelle