avec
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"..." sera affiché à la fin de la ligne en cas de débordement. Cependant, cela ne sera affiché que sur une seule ligne. Mais je voudrais qu'il soit affiché sur plusieurs lignes.
Cela peut ressembler à:
+--------------------+
|abcde feg hij dkjd|
|dsji jdia js ajid s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+
Réponses:
Il existe également plusieurs plugins jquery qui traitent de ce problème, mais beaucoup ne gèrent pas plusieurs lignes de texte. Travaux suivants:
Il y a aussi quelques tests de pré-performance .
la source
J'ai piraté jusqu'à ce que j'aie réussi à atteindre quelque chose de proche. Il vient avec quelques mises en garde:
Je dois également noter que le texte sera rompu à la limite d'un mot et non à la limite d'un caractère. C'était délibéré (car je considère que c'est mieux pour les textes plus longs), mais parce que c'est différent de ce qui se
text-overflow: ellipsis
passe, j'ai pensé que je devrais le mentionner.Si vous pouvez vivre avec ces mises en garde, le code HTML ressemble à ceci:
Et ceci est le CSS correspondant, en utilisant l'exemple d'une boîte de 150 pixels de large avec trois lignes de texte sur fond blanc. Il suppose que vous avez une réinitialisation CSS ou similaire qui définit les marges et les remplissages à zéro si nécessaire.
Le résultat ressemble à ceci:
Pour clarifier comment cela fonctionne, voici la même image, sauf qu'elle
.hidedots1
est mise en évidence en rouge et.hidedots2
en cyan. Ce sont les rectangles qui cachent les points de suspension lorsqu'il n'y a pas de texte invisible:Testé dans IE9, IE8 (émulé), Chrome, Firefox, Safari et Opera. Ne fonctionne pas dans IE7.
la source
your text
est emballé avec des<p>
étiquettes (comme ils devraient l' être), vous pouvez utiliser.ellipsify p:before
et.ellipsify p:after
puis bien sûr vous devez.ellipsify p:before{content:"\2026";}
l'\2026
est le code pour les points de suspension, aussi, peuvent avoir besoincontent:" ";
comme ils peuvent ne pas fonctionner pour les éléments vides.+1
.Voici un récent article css-tricks qui en discute.
Certaines des solutions de l'article ci-dessus (qui ne sont pas mentionnées ici) sont
1)
-webkit-line-clamp
et 2) Placer un élément absolument positionné en bas à droite avec fondu sortantLes deux méthodes supposent le balisage suivant:
avec css
1) -webkit-line-clamp
serre-câble FIDDLE (..pour un maximum de 3 lignes)
2) disparaître
Fade out FIDDLE
Solution # 3 - Une combinaison utilisant @supports
Nous pouvons utiliser @supports pour appliquer le line-clamp de webkit sur les navigateurs webkit et appliquer un fondu sortant dans d'autres navigateurs.
@supports line-clamp avec fade fallback fiddle
CSS
la source
Le lien ci-dessous fournit une solution HTML / CSS pure à ce problème.
Prise en charge du navigateur - comme indiqué dans l'article:
http://www.mobify.com/dev/multiline-ellipsis-in-pure-css
le css:
le html:
le violon
(redimensionner la fenêtre du navigateur pour les tests)
la source
Chrome for Mac Version 48.0.2564.116
Après avoir examiné la spécification W3 pour le débordement de texte , je ne pense pas que cela soit possible en utilisant uniquement CSS. Ellipsis est une propriété nouvelle, donc elle n'a probablement pas encore reçu beaucoup d'utilisation ou de commentaires.
Cependant, ce gars semble avoir posé une question similaire (ou identique), et quelqu'un a pu trouver une belle solution jQuery. Vous pouvez faire une démonstration de la solution ici: http://jsfiddle.net/MPkSF/
Si javascript n'est pas une option, je pense que vous n'avez peut-être pas de chance ...
la source
Je veux juste ajouter à cette question par souci d'exhaustivité.
la source
-o-ellipsis-lastline
qu'il ait été supprimé lorsque Opera est passé à WebKit. Laissant une balle à des fins historiques.Grande question ... J'aimerais qu'il y ait une réponse, mais c'est le plus proche que vous pouvez obtenir avec CSS de nos jours. Pas d'ellipse, mais tout de même assez utilisable.
la source
J'ai trouvé cette solution css (scss) qui fonctionne assez bien. Sur les navigateurs webkit, il affiche les points de suspension et sur les autres navigateurs, il tronque simplement le texte. Ce qui est bien pour mon utilisation prévue.
Un exemple du créateur: http://codepen.io/martinwolf/pen/qlFdp
la source
-webkit-line-clamp
support du navigateur caniuse.com/#search=-webkit-line-clampVoici la solution la plus proche que j'ai pu obtenir en utilisant simplement CSS.
HTML
CSS
Violon de travail ( redimensionnez la fenêtre pour vérifier )
Lien vers mon blog pour explication
Fiddle mis à jour
J'espère que maintenant un expert css aurait eu une idée sur la façon de le rendre parfait. :)
la source
div::before
place de celaspan
? :)Il y a beaucoup de réponses ici mais j'en avais besoin d'une qui était:
La mise en garde est qu'il ne fournit pas de points de suspension pour les navigateurs qui ne prennent pas en charge la
-webkit-line-clamp
règle (actuellement IE, Edge, Firefox) mais il utilise un dégradé pour estomper leur texte.Vous pouvez le voir en action dans ce CodePen et vous pouvez également voir une version Javascript ici (pas de jQuery).
la source
Un peu tard pour cette fête mais j'ai trouvé, ce que je pense, une solution unique. Plutôt que d'essayer d'insérer vos propres points de suspension par le biais de tromperie CSS ou js, je pensais que j'essaierais de rouler avec la seule restriction de ligne unique. Donc je duplique le texte pour chaque "ligne" et j'utilise juste un retrait de texte négatif pour m'assurer qu'une ligne commence là où la dernière s'arrête. VIOLON
CSS:
HTML:
Plus de détails au violon. Il y a un problème avec le navigateur qui indique que j'utilise un redessin JS et donc vérifiez-le, mais c'est le concept de base. Toutes les pensées / suggestions sont très appréciées.
la source
merci @balpha et @Kevin, je combine deux méthodes ensemble.
aucun js n'est nécessaire dans cette méthode.
vous pouvez utiliser
background-image
et aucun dégradé nécessaire pour masquer les points.le
innerHTML
de.ellipsis-placeholder
n'est pas nécessaire, j'utilise.ellipsis-placeholder
pour garder la même largeur et hauteur avec.ellipsis-more
. Vous pouvez utiliser à ladisplay: inline-block
place.jsfiddler
la source
la solution javascript sera meilleure
is-ellipsis
classe si la fenêtre est redimensionnée ou modifiéegetRowRects
Element.getClientRects()
fonctionne comme çachaque rects dans la même ligne a la même
top
valeur, alors découvrez les rects avec unetop
valeur différente , comme ceciflotte
...more
comme ça
détecter le redimensionnement de la fenêtre ou l'élément modifié
comme ça
la source
voir plus cliquez ici
la source
une base de méthode css pure sur -webkit-line-clamp:
la source
J'ai trouvé une astuce javascript, mais vous devez utiliser la longueur de la chaîne. Disons que vous voulez 3 lignes de largeur 250px, vous pouvez calculer la longueur par ligne ie
la source