CSS plusieurs lignes au-delà des ellipses

PHPz
Libérer: 2023-05-09 09:17:37
original
10136 Les gens l'ont consulté

Dans la conception Web, il est souvent nécessaire d'afficher du texte sur plusieurs lignes. Cependant, lorsque le contenu du texte est trop long, il dépassera la limite de largeur prédéfinie, ce qui entraînera une mise en page confuse. Afin d'éviter cette situation, nous devons omettre le texte redondant et afficher les ellipses pour augmenter l'esthétique globale et l'expérience utilisateur. En fait, il est très simple d'utiliser des styles CSS pour obtenir cet effet. Ensuite, nous présenterons plusieurs méthodes couramment utilisées.

Méthode 1 : Points de suspension centrés sur une seule ligne

Cette méthode est la plus simple et convient au contenu textuel ne comportant qu'une seule ligne. Nous pouvons y parvenir grâce aux deux lignes de code CSS suivantes :

overflow: hidden; text-overflow: ellipsis;
Copier après la connexion

overflow consiste à masquer le texte qui dépasse la limite de largeur, le débordement de texte est le moyen de l'exprimer au-delà de la limite de largeur, et le les points de suspension sont utilisés ici. Cependant, il existe une limitation avec ces deux lignes de code, qui ne s'applique qu'aux omissions sur une seule ligne. Si le texte comporte plusieurs lignes, nous devons utiliser d’autres méthodes.

Méthode 2 : Aligner les points de suspension aux deux extrémités de plusieurs lignes

Cette méthode autorise plusieurs lignes de texte et des points de suspension apparaissent à la fin du dernier mot de chaque ligne de texte. La clé ici est d'utiliserdisplay: -webkit-box;pour convertir le conteneur de texte en boîte flexible :

.box { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; // 限制显示的行数 }
Copier après la connexion

Parmi eux, -webkit-line-clamp signifie limiter le nombre maximum de lignes d'affichage de texte. Si vous souhaitez afficher plus de lignes, remplacez simplement le nombre par un nombre plus grand.

L'inconvénient de cette méthode est qu'elle ne peut être utilisée que par les navigateurs prenant en charge le noyau Webkit, une attention particulière doit donc être portée à la compatibilité.

Méthode 3 : Points de suspension multilignes + survol de la souris pour afficher le texte intégral

Cette méthode est similaire au bouton "Lire le texte intégral" Lorsque l'utilisateur survole la souris. pointeur sur le texte, seul le texte intégral sera affiché. Tout d’abord, nous devons limiter le texte à la plage de hauteur du conteneur et le texte en excès est masqué. Ensuite, nous pouvons contrôler l'affichage et le masquage du texte via les événements mouseenter et mouseleave de JavaScript.

Pour la partie CSS, nous pouvons l'implémenter via le code suivant :

.text { display: -webkit-box; -webkit-line-clamp: 3; //限定显示行数 -webkit-box-orient: vertical; overflow: hidden; } .show-text { display: block; cursor: pointer; }
Copier après la connexion

Utilisez js pour implémenter la liaison d'événements et l'affichage et le masquage de texte :

var text = document.querySelector('.text'); var textHeight = window.getComputedStyle(text).height; if(parseInt(textHeight) < text.scrollHeight) { text.classList.add('show-text'); text.addEventListener('mouseenter', function() { text.classList.remove('text'); }); text.addEventListener('mouseleave', function() { text.classList.add('text'); }); }
Copier après la connexion
# #Cette méthode permet de mieux contrôler l'affichage et le masquage du texte et d'améliorer l'expérience utilisateur, mais elle nécessite plus de temps de codage et de mise en œuvre d'effets dynamiques.

Méthode 4 : Utiliser des filtres dans Vue.js

Vue.js est un framework frontal qui peut réaliser une liaison bidirectionnelle des données et une réponse dynamique de la page. Dans Vue.js, nous pouvons obtenir l'effet d'ellipses multilignes grâce à des filtres. Comme le montre le code suivant :

Copier après la connexion

Parmi eux, la directive v-html est utilisée pour restituer le contenu du texte et le symbole de pipeline "|" est utilisé pour coordonner les filtres et les expressions. Des filtres peuvent être définis dans les instances Vue.js, comme indiqué ci-dessous :

Vue.filter('multilineEllipsis', function(text, lines) { var stopwords = ['the', 'in', 'on', 'at', 'is', 'are', 'to', 'and']; var reg = new RegExp(`(?:(?<=(^|(.{2,}?\W)))[${stopwords.join('')}])?(?(.|\n){1,20}(?=(.|\n){0,20}[\W]$))`, 'g'); var len = 0; var result = ''; var lineCount = 0; while(len <= text.length && lineCount < lines) { var match = reg.exec(text.slice(len)); if(match && match.groups.line) { result += match.groups.line; len += match[0].length; } else { break; } if(len < text.length) { var nextchar = text[len]; if(nextchar !== ' ' && nextchar !== ' ' && nextchar !== '') { result += '...'; break; } } lineCount++; } if(len < text.length) { result += '...'; } return result; });
Copier après la connexion
Ce filtre est plus complexe. Il effectuera une correspondance régulière dans le texte et convertira chaque ligne de texte qui répond aux exigences en celle correspondante. HTML, et conservez les points de suspension. Ce filtre vous permet également de formuler des expressions régulières en faisant référence à une liste de mots anglais courants, améliorant ainsi la qualité de l'affichage du texte.

End

Il existe plusieurs méthodes ci-dessus pour implémenter des ellipses multilignes CSS. Les développeurs peuvent choisir la méthode appropriée en fonction des besoins spécifiques. Parmi eux, l'implémentation utilisant les filtres Vue.js est relativement nouvelle et populaire, et est adoptée par de plus en plus de développeurs. Quelle que soit la méthode utilisée, il faut veiller à la compatibilité et à la réactivité dynamique, ainsi qu'à améliorer l'esthétique globale du site Web tout en offrant aux utilisateurs la meilleure expérience.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!