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
