Je sais que vous pouvez utiliser une combinaison de règles CSS pour que le texte se termine par des points de suspension (...) quand il est temps de déborder (sortir des limites des parents).
Est-il possible (n'hésitez pas à dire non) d'obtenir le même effet, mais laissez le texte s'enrouler sur plus d'une ligne?
div {
width: 300px;
height: 42px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
Comme vous pouvez le voir, le texte se termine par des points de suspension lorsqu'il dépasse la largeur du div. Cependant, il y a encore suffisamment d'espace pour que le texte s'habille sur une deuxième ligne et continue. Ceci est interrompu par white-space: nowrap
, ce qui est nécessaire pour que les points de suspension fonctionnent.
Des idées?
PS: Pas de solutions JS, pur CSS si possible.
Réponses:
Je ne sais pas si vous avez vu CECI , mais l'excellent CSS-Tricks.com de Chris Coyier a publié un lien vers ceci il y a quelque temps et c'est une solution CSS pure qui accomplit exactement ce que vous cherchez.
(Cliquez pour afficher sur CodePen)
HTML:
CSS:
Bien sûr, être une solution CSS pure signifie que c'est aussi une solution assez compliquée, mais cela fonctionne proprement et élégamment. Je suppose que Javascript est hors de question car c'est beaucoup plus facile à réaliser (et sans doute plus dégradable) avec Javascript.
En prime, il y a un fichier zip téléchargeable du processus complet (si vous voulez le comprendre et tout), mais aussi un fichier mixin SASS afin que vous puissiez le plier dans votre processus easy-peasy.
J'espère que cela t'aides!
http://www.mobify.com/blog/multiline-ellipsis-in-pure-css/
la source
Les propriétés CSS simples peuvent faire l'affaire. Ce qui suit est pour une ellipse de trois lignes.
la source
Jetez un œil à cette version css pure: http://codepen.io/martinwolf/pen/qlFdp
la source
text-overflow
etdisplay
règles?Css ci-dessous devrait faire l'affaire.
Après la deuxième ligne, le texte contiendra ...
la source
overflow:hidden
Utilisez ceci si ci-dessus ne fonctionne pas
la source
Ma solution réutilise celle d'amcdnl, mais ma solution de secours consiste à utiliser une hauteur pour le conteneur de texte:
la source
-webkit-line-clamp
ne fonctionne pas pour IE11, Edge ou Firefox.Sur la base d'une réponse que j'ai vue dans stackoveflow, j'ai créé ce mixin MOINS ( utilisez ce lien pour générer le code CSS ):
Usage
la source
Cela semble plus élégant en combinant deux classes. Vous pouvez supprimer la
two-lines
classe si une seule ligne a besoin de voir:la source
Restreindre à quelques lignes fonctionnera dans presque tous les navigateurs, mais les points de suspension (3 points) ne seront pas affichés dans Firefox et IE. Démo - http://jsfiddle.net/ahzo4b91/1/
la source
J'ai trouvé une combinaison de travaux de serrage de ligne et de hauteur de ligne: D
la source
Dans mon application angulaire, le style suivant a fonctionné pour moi pour obtenir des points de suspension sur le débordement de texte sur la deuxième ligne :
J'espère que ça aide quelqu'un.
la source
Pour ceux qui travaillent dans scss , vous devez ajouter
!autoprefixer
au début du commentaire afin qu'il soit conservé pour postcss:J'ai rencontré ce problème, c'est pourquoi le publier ici
Référence
la source
Vous pouvez utiliser un effet dissous au lieu d'ellipse, du CSS pur et un look plus professionnel:
Ici, j'ai supposé que votre couleur d'arrière-plan est le blanc.
la source
C'est un hack total, mais cela fonctionne:
http://jsfiddle.net/2wPNg/
Il a des problèmes ... il pourrait couper une lettre maladroitement, et il aura probablement des résultats étranges sur un site réactif.
la source
Voici un script simple pour gérer les points de suspension à l'aide de jQuery. Il inspecte la hauteur réelle de l'élément et crée un nœud d'origine caché et un nœud tronqué. Lorsque l'utilisateur clique, il bascule entre les deux versions.
L'un des grands avantages est que les "points de suspension" sont proches du dernier mot, comme prévu.
Si vous utilisez des solutions CSS pures, les trois points semblent distants du dernier mot.
la source
Vous ne savez pas quelle est votre cible, mais voulez-vous que le texte apparaisse sur la deuxième ligne?
Voici votre jsFiddle: http://jsfiddle.net/8kvWX/4/ vient de supprimer ce qui suit:
Je ne sais pas si c'est ce que vous recherchez ou non.
Cordialement,
Mee
la source