Ü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?


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>


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>


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;
}

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>



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>


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>

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;
}

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>

-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;
  }
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.