375 votes

css ellipsis sur la deuxième ligne

CSS text-overflow: ellipsis sur la deuxième ligne, est-ce possible ? Je ne le trouve pas sur le net.

exemple :

ce que je veux c'est comme ça

I hope someone could help me. I need 
an ellipsis on the second line of...

mais ce qui se passe, c'est ça,

I hope someone could help me. I ...

3 votes

A priori, l'ellipse apparaîtra et coupera le texte à la fin de la largeur de l'élément. Il ne passera pas à la ligne suivante. La meilleure solution ici serait d'implémenter un script côté serveur ou côté client qui coupe automatiquement le texte à un certain nombre de caractères et ajoute ensuite l'ellipse. À mon avis, un script côté client serait préférable, ce qui vous permettrait de toujours disposer de tout le texte original si vous en avez besoin.

1 votes

Voici une question similaire : stackoverflow.com/questions/3922739/

0 votes

Tl;dr : c'est possible seulement dans webkit

370voto

Skeep Points 393

Cela fonctionne pour moi dans webkit :

text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;

1 votes

Notez que, à partir de ce commentaire, -webkit-line-clamp ne respecte pas visibility : hidden. bugs.webkit.org/show_bug.cgi?id=45399

6 votes

Hé - ça a l'air sympa mais ça ne marche pas pour moi. Il met simplement '...' à la ligne donnée mais ne coupe pas le reste du texte (même avec l'attr espace blanc).

10 votes

Vous devrez peut-être ajouter overflow: hidden pour que cela fonctionne.

157voto

Rudie Points 8975

Une exigence pour text-overflow: ellipsis; pour fonctionner est une version en une ligne de white-space ( pre , nowrap etc). Ce qui signifie que le texte n'atteindra jamais la deuxième ligne.

Ergo. Impossible en CSS pur.

Ma source quand je cherchais exactement la même chose à l'instant : http://www.quirksmode.org/css/textoverflow.html (Quirksmode ftw !)

EDIT Si les dieux du CSS veulent bien mettre en place http://www.w3.org/TR/css-overflow-3/#max-lines nous pouvons le faire en pure CSS en utilisant fragments (nouveau) et max-lines (nouveau). Également quelques informations supplémentaires sur http://css-tricks.com/line-clampin/

15 votes

Je surveille, mais pour l'instant il semble que les dieux ne soient pas encore avec nous : caniuse.com/#search=max-lines

1 votes

Comment réaliser la fonctionnalité ci-dessus avec Saas ? @Rudie

1 votes

-webkit-line-clamp: 3

36voto

Giohji Points 445

Comme d'autres ont déjà répondu, une solution CSS pure n'existe pas. Il existe une jQuery qui est très facile à utiliser, il s'appelle pointdotdot . Il utilise la largeur et la hauteur du conteneur pour calculer s'il doit tronquer et ajouter des ellipses.

$("#multilinedElement").dotdotdot();

Voici un jsFiddle .

0 votes

Ce plugin fournit également beaucoup d'autres utilitaires comme l'ajout de liens "read more", il peut également analyser les URI et les balises HTML. Bonne découverte !

2 votes

J'ai essayé jQuery dotdotdot 1.7.3 pour une boutique de commerce électronique, afin de limiter à deux lignes les noms de produits sur une page de catégorie en grille. Après des tests approfondis, nous avons décidé de ne pas utiliser ce plugin car parfois, après un rafraîchissement, la mise en page de la page de catégorie était interrompue. YMMV. Finalement, nous avons opté pour une solution JS très simple : si le clientHeight de l'élément de nom de produit est inférieur à son scrollHeight, le texte est tronqué à une limite prédéfinie et ajouté "...". Parfois, quelques noms de produits peuvent être un peu trop courts à cause de la limite prédéfinie, mais c'est super stable.

1 votes

Il est facile à mettre en œuvre et fonctionne à merveille. Merci !

10voto

superlogical Points 5129

Quel dommage que vous ne puissiez pas le faire fonctionner sur deux lignes ! Ce serait génial si l'élément était un bloc d'affichage et que sa hauteur était fixée à 2em ou quelque chose comme ça, et que lorsque le texte débordait, il affichait une ellipse !

Pour une seule doublure, vous pouvez utiliser :

.show-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

Pour les lignes multiples, vous pouvez peut-être utiliser un Polyfill tel que jQuery autoellipsis qui se trouve sur github. http://pvdspek.github.com/jquery.autoellipsis/

0 votes

Ce plugin est bien trop lourd pour ce qu'il fait. Il a 5 ans. Utilisez plutôt dotdotdot mentionné dans un autre post.

6voto

andyb Points 26066

J'ai utilisé le jQuery-condense-plugin avant, qui semble pouvoir faire ce que vous voulez. Sinon, il y a différents plugins qui pourraient répondre à vos besoins.

Edit : Made you a Démonstration - Notez que j'ai lié le jquery.condense.js sur la démo qui fait la magie, donc tout le mérite revient à l'auteur de ce plugin :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X