Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Skracanie tytułu do szerokości diva
bahh
post
Post #1





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


Nie wiem czy znalazł już ktoś sposób na dynamiczne skracanie tytułów by pasowały do diva o określonej szerokości. Mam tu na myśli zastąpienie substr czymś bardziej praktycznym. Substr gdy zakończy się w "środku" polskiego znaku powstaje krzaczek. Poza tym, szerokość liter ma znaczenie. Niektóre tytuły nie zmieszczą się gdy inne tytuły są ucinane w 3/4 a mogłyby być wyświetlone w całości - ilość znaków ta sama.

Mam np. tytuł: Wypadek w Kamieniu Pomorskim. Co zeznała pasażerka?
Szerokość diva 240 px, chcę by ten tekst zmieścił się w dwóch linijkach do szerokości 240px, jak się nie zmieści to zastąpi ostatnie 3 znaki kropkami.

Czy istnieje jakiś sposób na to?
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


a google masz? http://funkcje.net/view/2/1800/index.html

Ten post edytował com 2.01.2014, 15:02:46
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


W PHP dobrze tego nie zrobisz. Zresztą i tak nie miałoby to sensu.

Rzuć okiem na rozwiązanie JS: http://jsfiddle.net/5YrQR/

[edit]
A co do substr, który tworzy krzaczki dla polskich znaków, zainteresuj się mb_substr, która działa poprawnie dla Unicode.

Ten post edytował sowiq 2.01.2014, 15:08:45
Go to the top of the page
+Quote Post
bahh
post
Post #4





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


czy rozwiązanie js nie będzie bardzo obciążające? mam zamiar stosować to na nawet 15 tytułach
Go to the top of the page
+Quote Post
sowiq
post
Post #5





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To zależy jak dużo znaków bedzie musiał odciąć skrypt (1 znak = jedna iteracja, a w niej pobieranie wysokości elementu). Żeby przyspieszyć, możesz założyć maksymalną ilość znaków (np. 40), powyżej której na pewno tekst będzie za długi. Wtedy na początku ucinasz wszystko powyżej 40 znaków i dopiero potem wchodzisz w pętlę i ucinasz pojedyncze znaki.

Zawsze też możesz zrobić test - wrzucić 50 tytułów i sprawdzić obciążenie. Ale IMO będzie ono pomijalnie małe.

[edit]
Żeby nie być gołosłownym: http://jsfiddle.net/5YrQR/1/ Oczywiście czas będzie zależał od długości tytułów i szerokości elementu z tytułem (dlatego zmniejszyłem szerokość do 120px).

Ten post edytował sowiq 2.01.2014, 16:44:09
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #6





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


Cytat(bahh @ 2.01.2014, 14:54:49 ) *
Nie wiem czy znalazł już ktoś sposób na dynamiczne skracanie tytułów by pasowały do diva o określonej szerokości. Mam tu na myśli zastąpienie substr czymś bardziej praktycznym. Substr gdy zakończy się w "środku" polskiego znaku powstaje krzaczek. Poza tym, szerokość liter ma znaczenie. Niektóre tytuły nie zmieszczą się gdy inne tytuły są ucinane w 3/4 a mogłyby być wyświetlone w całości - ilość znaków ta sama.

Mam np. tytuł: Wypadek w Kamieniu Pomorskim. Co zeznała pasażerka?
Szerokość diva 240 px, chcę by ten tekst zmieścił się w dwóch linijkach do szerokości 240px, jak się nie zmieści to zastąpi ostatnie 3 znaki kropkami.

Czy istnieje jakiś sposób na to?


rozwiązanie na czystym CSS: http://jsfiddle.net/yYjh3/

Go to the top of the page
+Quote Post
bostaf
post
Post #7





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Cytat(PrinceOfPersia @ 2.01.2014, 17:55:28 ) *
rozwiązanie na czystym CSS: http://jsfiddle.net/yYjh3/

  1. text-overflow: ellipsis;

Cool (IMG:style_emoticons/default/smile.gif) Nie znałem tego wcześniej. Całe życie człowiek się uczy. + Ci za to @PrinceOfPersia (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:55