J'ai une application Rails qui permet aux utilisateurs de saisir du texte au format HTML (P, OL, UL, BLOCKQUOTE). Je veux maintenant afficher un court résumé de ce texte, mais je veux m'assurer que je ne montre que < = 4 "lignes". Je peux essayer de raccourcir le texte par le nombre de mots affichés, mais cela pourrait se retrouver dans beaucoup de lignes s'il y a des éléments LI d'un mot, etc. Comment puis-je faire cela?Comment contrôler le nombre de lignes affichées sur un bloc d'entrée utilisateur au format HTML?
Répondre
Je pense que vous avez manqué le point de sa question -> il affiche ce texte et se préoccupe du nombre de * lignes * qu'il couvrira, pas combien de caractères il sera. – Ryley
sont vos lignes déterminées par où le <br>
ou \n
sont? Si c'est le cas, ne les afficher que sur le text.substring(0, to the location-1 where the 4th break/newline is)
. Si vos lignes sont déterminées par la longueur (par exemple, vous ne pouvez afficher que 20 caractères pour chaque ligne), ajoutez cette restriction à votre compte. Si oui, je peux vous montrer comment je le ferais.
Vous pouvez utiliser style="max-height: 40"
Mais cela ne fonctionnera que, si vous connaissez la hauteur de la ligne de vos lignes.
Je ne pense pas qu'il existe une notation, où vous pouvez fournir le maximum de lignes.
"max-height: 4em" devrait fonctionner mieux. –
Je pense que la réponse courte est que vous ne pouvez pas le faire parfaitement, surtout pas du côté du serveur. Une stratégie consisterait simplement à deviner en utilisant quelque chose comme ce que suggérait @Kyra. L'autre chose à faire serait d'envoyer le texte intégral au navigateur de l'utilisateur, puis l'ajouter dans un div de la largeur appropriée, avec la taille de police (qui pourrait être modifiée par le CSS personnel des utilisateurs), ils seront avoir, puis mesurer la hauteur de la div résultant.
Ainsi, votre div pourrait ressembler à ceci:
<div id="dummyDiv" style="position:absolute;top:-10000px;width:400px;font-size:smaller">
user text here
</div>
Ensuite, vous mesurez la hauteur à l'aide javascript (c.-à-jQuery), et si le texte est trop long, continuer à essayer ceci sur des extraits plus courts du texte jusqu'à ce que c'est une taille raisonnable.
EDIT: crédit pour cette stratégie va flot
Si je vous comprends bien, vous voulez montrer une sorte de prévisualisation HTML de texte que les utilisateurs tapent dans une zone de texte, comme l'aperçu qui montre en dessous de la zone de texte ici sur stackoverflow.
Probablement le moyen le plus simple est avec CSS.
#preview { height: 4em; overflow: hidden; }
Cela devrait fonctionner si la ligne de hauteur est normale. C'est bien sûr juste cacher le texte supplémentaire. Si le fait de se cacher n'est pas acceptable et que vous ne devez générer que 4 lignes de Ruby pour l'afficher, alors c'est plus compliqué. Je ne connais pas Ruby, donc je ne peux pas vous donner d'exemples de code. Je diviserais d'abord le texte à tout moment où une nouvelle ligne serait forcée, comme <br>
, <p>
, <li>
etc. Ensuite, divisez ces morceaux en calculant combien de caractères peuvent tenir sur une ligne et en divisant le texte à ces intervalles. Désolé, je ne connais pas le code Ruby, mais vous devriez être en mesure de diviser le texte en premier sur ces caractères de rupture de ligne et ensuite le diviser en deux caractères X où X est la quantité approximative de caractères que vous pouvez placer sur une ligne.Si vous utilisez une police de largeur fixe, vous pouvez déterminer exactement combien de caractères correspondent à une ligne. Donc, vous finiriez avec un tableau ou quelque chose et ensuite vous collerez les 4 premiers morceaux ensemble.
J'espère que cela aide.
<p><%= truncate strip_tags(object.text), :length => 150, :omission => '…' %></p>
Si vous tentez de tronquer dans le balisage, vous demandez une mise en page interrompue. Je le retirerais et tronquerais le texte. Si vous avez besoin d'un balisage, j'utiliserais markdown ou textile pour gérer la mise en forme, puis la troncature basée sur la longueur serait plus précisément dimensionnée.
- 1. html - contrôler le nombre d'options affichées dans un élément de sélection
- 2. [quicksearch] Comment déterminer le nombre de lignes affichées?
- 3. Intégrer XPS au format HTML
- 4. nombre maximum de lignes pouvant être affichées sur tableview
- 5. Comment augmenter le nombre de lignes affichées d'un vidage de trace de la pile Java?
- 6. Remplissage d'enregistrements au format Html Table
- 7. comment transférer le format de nombre C++ au format de nombre C#?
- 8. Limiter le nombre de lignes affichées dans le contrôle des éléments
- 9. Comment peindre des lignes de type bloc-notes au format TextBox?
- 10. CSS/Javascript: Comment compter le nombre de lignes affichées d'un élément?
- 11. comment contrôler le format des rails select_date?
- 12. Cakephp comment réduire le nombre de lignes affichées avec la sélection multiple
- 13. Regex BBCode au format HTML
- 14. Drupal: Balises de blog en double affichées dans le bloc
- 15. Comment rendre le bloc HTML?
- 16. Enveloppe de texte équilibrée au format HTML
- 17. Obtention du nombre de lignes affichées dans une zone de texte multiligne dans le cadre compact
- 18. Envoyer un e-mail au format HTML
- 19. exporter le rapport jasper au format .pdf, mais l'exporter au format html ne fonctionne pas correctement
- 20. Enregistrer la page actuelle au format HTML sur le serveur
- 21. Créer un fichier Excel au format html
- 22. Comment imprimer du code au format HTML
- 23. JavaScript pour obtenir le nombre de lignes d'un tableau HTML
- 24. HTML numérique au format UTF
- 25. Comment modifier le format de lignes spécifiées dans un RichTextBox
- 26. format le nombre
- 27. Document Word au format HTML
- 28. Comment afficher le nombre entier au lieu du format de nombre exponentiel
- 29. Comment compter le nombre de lignes dans un jqGrid?
- 30. Align = "centre" effet sur les données affichées gridview lignes
quelle langue utilisez-vous? – Sarfraz
Ruby/Rails, désolé oublié de mentionner. – Newy