Mam aplikację Rails, która umożliwia użytkownikom wprowadzanie tekstu w formacie HTML (P, OL, UL, BLOCKQUOTE). Chcę teraz wyświetlić krótkie podsumowanie tego tekstu, ale chcę się upewnić, że pokazuję tylko < = 4 "linie". Mogę spróbować skrócić tekst o liczbę wyświetlanych słów, ale to może się skończyć w wielu liniach, jeśli istnieją jednoelementowe elementy LI itp. Jak mogę to zrobić?Jak kontrolować liczbę wierszy wyświetlanych w bloku danych wprowadzanych przez użytkownika w formacie HTML?
Odpowiedz
Myślę, że przegapiłeś punkt swojego pytania -> wyświetla ten tekst i zależy mu na tym, ile * linii * obejmie, a nie ile znaków będzie trwało. – Ryley
Czy Twoje Linie określa gdzie <br>
lub \n
są? Jeśli tak, policz je tylko pokazać text.substring(0, to the location-1 where the 4th break/newline is)
. Jeśli twoje żaby są określone przez długość (na przykład możesz pokazać tylko 20 znaków w każdej linii), dodaj to ograniczenie do swojej liczby. Jeśli tak, mogę pokazać, jak bym to zrobił.
Można użyć style="max-height: 40"
Ale to będzie działać tylko, jeśli wiesz o wysokości linii swoimi wierszami.
Nie sądzę, że istnieje zapis, w którym można podać maksymalne linie.
"Maks. Wysokość: 4em" powinna działać lepiej. –
Myślę, że krótka odpowiedź brzmi, że nie można tego zrobić idealnie, zwłaszcza po stronie serwera. Jedną ze strategii byłoby po prostu oszacowanie przy użyciu czegoś, co sugerowało @Kyra.
Kolejną rzeczą do zrobienia byłoby przesłanie pełnego tekstu do przeglądarki użytkownika, a następnie dodanie go do div o odpowiedniej szerokości, z wielkością czcionki (która może być modyfikowana przez osobisty CSS użytkowników). faktycznie ma, a następnie zmierzyć wysokość wynikowego div.
Więc div może wyglądać tak:
<div id="dummyDiv" style="position:absolute;top:-10000px;width:400px;font-size:smaller">
user text here
</div>
Następnie należy zmierzyć wysokość przy użyciu javascript (tj jQuery), a jeśli tekst jest zbyt długi, próbować to na krótsze fragmenty tekstu, aż to rozsądna wysokość.
EDIT: kredyt dla tej strategii idzie flot
Jeśli rozumiem zostanie poprawnie chcesz pokazać coś w rodzaju podglądu HTML tekstu, który użytkownicy wpisują w textarea, jak podglądu, która pokazuje poniżej textarea tutaj na stackoverflow.
Prawdopodobnie najprostszy sposób to CSS.
#preview { height: 4em; overflow: hidden; }
To powinno działać, jeśli line-height jest normalne. To oczywiście ukrywa dodatkowy tekst. Jeśli ukrywanie jest niedopuszczalne i musisz wygenerować tylko 4 wiersze od Rubiego do wyświetlenia, to jest trudniejsze. Nie znam Rubiego, więc nie mogę podać przykładów kodu. Najpierw podzielę tekst w dowolnym miejscu, w którym zostanie wymuszona nowa linia, na przykład <br>
, <p>
, <li>
itd. Następnie podziel dalej te porcje, ustalając, ile znaków może zmieścić się w jednej linii i dzieląc tekst w tych odstępach. Niestety nie znam kodu Ruby, ale powinieneś być w stanie najpierw podzielić tekst na te łamiące linie znaki, a następnie podzielić je dalej co X znaków, gdzie X to przybliżona ilość znaków, które możesz zmieścić na linii.Jeśli używasz czcionki o stałej szerokości, możesz dokładnie określić, ile znaków mieści się na linii. Więc skończysz z tablicą lub czymś, a potem po prostu sklejesz pierwsze 4 kawałki razem.
Mam nadzieję, że to pomaga.
<p><%= truncate strip_tags(object.text), :length => 150, :omission => '…' %></p>
Próba obcięcia w ramach znaczników powoduje błąd w układzie. Rozetnę to i obcię tekst. Jeśli potrzebujesz znaczników, używałbym przecinania lub tekstyliów do obsługi formatowania, a wtedy obcięcie długości byłoby bardziej precyzyjne.
- 1. Django - Jak zwiększać liczbę całkowitą z danych wprowadzanych przez użytkownika?
- 2. Uzyskiwanie danych wprowadzanych przez użytkownika W Ruby
- 3. Jak kontrolować liczbę wierszy w JasperReports
- 4. MIPS - Przechowywanie danych w tablicy w danych wprowadzanych przez użytkownika
- 5. Sprawdzanie poprawności danych wprowadzanych przez użytkownika lub
- 6. Escape/sanitize danych wprowadzanych przez użytkownika w Clojure/Compojure
- 7. Sprawdzanie poprawności danych wprowadzanych przez użytkownika w QTableView
- 8. phpMyAdmin: zmienić domyślną liczbę wyświetlanych wierszy?
- 9. Jak ograniczyć liczbę znaków wprowadzanych przez cin?
- 10. Symulowanie danych wprowadzanych przez użytkownika w skrypcie bash
- 11. Przechowywanie danych wprowadzanych przez użytkownika w skrypcie Greasemonkey przy instalacji
- 12. Porównywanie wprowadzanych przez użytkownika znaków w C
- 13. java.util.NoSuchElementException - Odczytywanie przez skanera danych wprowadzanych przez użytkownika
- 14. Sprawdzanie składni linków wprowadzanych przez użytkownika
- 15. zmienna reaktywny przechwytywanie danych wprowadzanych przez użytkownika (Meteor)
- 16. Arkusze stylów AngularJS przełącznika na podstawie danych wprowadzanych przez użytkownika
- 17. Najlepsza metoda przekształcania danych wprowadzanych przez użytkownika do UTF-8
- 18. Tworzenie dynamicznego CSS na podstawie danych wprowadzanych przez użytkownika
- 19. Wprowadzanie danych wprowadzanych przez użytkownika jako bezpiecznych dla XML
- 20. Jak kontrolować podziały wierszy w widokach wiadomości tekstowych w formacie tekstowym (.text.erb)
- 21. Jak ustawić, aby combobox nie akceptował danych wprowadzanych przez użytkownika w Excel-Vba?
- 22. jQuery datatables, programowa zmiana liczby wierszy wyświetlanych
- 23. Jak policzyć liczbę wierszy w tabeli bazy danych w Django
- 24. Jak ograniczyć liczbę wierszy w PostgreSQL SELECT
- 25. Jak policzyć liczbę wierszy z określonych danych w MSSQL
- 26. Jak ograniczyć liczbę języków wyświetlanych w oknie publikowania Sitecore?
- 27. Jak dynamicznie budować i zwracać predykat linq na podstawie danych wprowadzanych przez użytkownika
- 28. C# kontrolować wyrównanie danych
- 29. Jak mogę kontrolować liczbę klatek na sekundę w Qt 3D?
- 30. Sprawdź liczbę wierszy w CodeIgniter
jakiego języka używasz? – Sarfraz
Ruby/Rails, przepraszam, zapomniałem wspomnieć. – Newy