Débordement: points cachés à la fin


206

Disons que j'ai une chaîne " j'aime les gros culs et je ne peux pas mentir " et je la coupe avec overflow:hidden, donc elle affiche quelque chose comme ceci:

J'aime les gros culs et je ne peux pas

couper le texte. Est-il possible d'afficher ceci comme ceci:

J'aime les gros culs et je ne peux pas ...

en utilisant CSS?


46
Cette question est-elle une ruse pour promouvoir la chanson?
Cyril Gupta

12
@CyrilGupta Désolé pour la réponse tardive. J'ai dû courir aux toilettes. Pour répondre à votre question ... Oui
Joe Phillips

Réponses:


282

Vous pouvez utiliser le débordement de texte: points de suspension; qui, selon caniuse, est pris en charge par tous les principaux navigateurs.

Voici une démo sur 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>


Cela semblait fonctionner dans Firefox 15.0.1: w3schools.com/cssref/tryit.asp?filename=trycss3_text-overflow
Jace

Oui, il semble fonctionner dans les versions plus récentes. Évidemment, cette réponse date de quelques années.
Joe Phillips

Firefox a commencé à prendre en charge cela à partir de la version 7, qui a été publiée dans la seconde moitié de 2011.
Richard Ev

1
Je peux utiliser mon bon sens pour dire que cette réponse est "correcte" sur la base des votes et des commentaires. Cependant, je ne vois pas en réalité comment cette réponse est "juste". J'ai utilisé à la fois overflow: hidden;et text-overflow: ellipsis;dans un <p>élément (c'est-à-dire un élément de bloc) et ...je n'ai trouvé aucun à la fin (bien sûr, je m'assure qu'il déborde bien). J'ai également essayé cela sans la overflow: hidden;partie, et aussi avec un <span>élément à l'intérieur de l' <p>élément où l' <p>élément avait overflow: hidden;et <span>avait text-overflow: ellipsis;Peu importe comment
j'essayais

2
Eh bien, je pense que je connais le problème. J'essaie de restreindre le débordement en fonction de max-heightce que je ne peux pas avoir white-space:réglé surnowrap
VoidKing

89

Vérifiez l'extrait de code suivant pour votre problème

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 pour ajouter "white-space: nowrap;" qui pourrait être nécessaire dans certains cas
leo

2
comment faire disparaître le texte pour afficher 2 lignes?
Martian2049

1
@ Matian2040 vous pouvez ajuster en donnant une hauteur fixe et des styles cachés de débordement, vérifiez ce violon jsfiddle.net/5135L4bx
Arjun

1
Oh je vois. j'ai essayé. mais il semble que deux lignes signifient qu'il n'y aura pas de ... à la fin?
Martian2049

1
display: inline-block;était le composant manquant pour moi. Je vous remercie.
Seth

18

Essayez ceci si vous souhaitez restreindre les lignes jusqu'à 3 et après trois lignes, les points apparaîtront. Si nous voulons augmenter les lignes, changez simplement la valeur de -webkit-line-clamp et donnez la largeur pour la taille div.

div {
   display: -webkit-box;
   -webkit-line-clamp: 3;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
}

excuses, je ne sais pas comment j'ai supprimé tes mots comme ça!
Alec

fonctionne très bien sur Chrome, mais notez que cela ne fonctionnera pas sur Firefox
Ken Bigler

Comment faire cela sur un autre navigateur, par exemple Firefox? Edit: stackoverflow.com/questions/33058004/…
user3187724

17

J'espère que cela vous sera utile:

.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

Dans bootstrap 4 , vous pouvez ajouter une .text-truncateclasse pour tronquer le texte avec des points de suspension.

<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

La plupart des solutions utilisent ici une largeur statique. Mais cela peut parfois être faux pour certaines raisons.

Exemple: j'avais une table avec plusieurs colonnes. La plupart d'entre eux sont étroits (largeur statique). Mais la colonne principale doit être aussi large que possible (dépend de la taille de l'écran).

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

masquer le texte au chargement et afficher en survol

<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;
  }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.