Text-overflow:ellipsis en pur CSS sous Firefox

Voici comment reproduire l’effet de text-overflow:ellipsis qui existe sur Internet Explorer dans Firefox. Le tout en CSS évidemment !
Pour rappel, la propriété text-overflow rajoute des points de suspension (…) à la fin d’un texte si celui-ci est plus grand que la taille du bloc.
Sous internet explorer, avec le code :
span.ellipsis {
   white-space:nowrap;
   text-overflow:ellipsis;
   overflow:hidden;
   width:190px;
   display:block;
}

Pour reproduire la même chose sous firefox, pas facile ! Il est d’ailleurs impossible de reproduire exactement l’effet obtenu. Mais essayons de le reproduire de la manière la plus proche et la plus logique possible :

Seule contrainte, on est obligé d’avoir 2 éléments imbriqués, impossible d’y arriver sur un seul élément. En tous cas je n’ai pas réussi. Challenge : le faire avec un seul élément. Le concours est ouvert ;) hein tooms ?

Donc, avec un code html comme suit :

<div class="ellipsis">
<span>A very, very, very, very, very, very, very, very, very long text</span>
</div>

On aurait le css suivant (ta-tinnn !!) :

.ellipsis span {    white-space:nowrap;    text-overflow:ellipsis; /* for internet explorer */    overflow:hidden;    width:190px;    display:block; } html>body .ellipsis {    clear:both; } html>body .ellipsis span:after {    content: "..."; } html>body .ellipsis span {    max-width:180px;    width:auto !important;    float:left; }

2 problèmes subsistent :

  • le texte peut être coupé au milieu d’une lettre
  • les points de suspension s’affichent à la fin même si le texte est suffisamment court pour être affiché en entier