Menu

CSS Text-overflow: ellipsis sur plusieurs lignes

Publié en April 2018 - Design & UI, Développement web

line-clamp-multiline

En CSS, la règle text-overflow: ellipsis permet d'ajouter trois points à la fin d'un mot s'il dépasse la largeur de son conteneur.

text-overflow: ellipsis;

Malheureusement cela ne fonctionne pas pour du texte sur plusieurs lignes. Il existe la règle line-clamp mais le support n'est pas très étendu sur les navigateurs. Voici donc un petit mixin Sass qui permettra d'augmenter son support avec un fallback :

@mixin line-clamp($lines, $line-height) {
    display: block;
    display: -webkit-box;
    -webkit-line-clamp: $lines;
    -webkit-box-orient: vertical;
    max-height: $lines * $line-height;
    text-overflow: ellipsis;
    overflow: hidden;
}

Pour son utilisateur il suffit de lui passer le nombre de ligne désirée et le line-height courant. Ce deuxième paramètre permet de limiter la taille du conteneur pour les cas ou le navigateur ne support pas line-clamp le texte sera toujours limité au bon nombre de ligne mais n'aura juste pas les trois points finaux.

.article-intro {
    @include line-clamp(3, 1.25em);
}

Plutôt très pratique !