Perfection or Vanity

Project: Terminated

Blog nie jest już dalej prowadzony ani aktualizowany. Mimo tego, wpisy i komentarze są dalej dostępne. Możesz przeczytać pożegnalny wpis albo przejść do archiwum.

Używając systemu na pewno mieliście okazję tak zmniejszyć okno, że część etykietek tekstowych w środku została przycięta. Pojawia się wtedy zgrabnie wielokropek wskazując, że dalej jest coś napisane. Nie sposób zliczyć miejsc, w których działa takie proste udogodnienie - występuje praktycznie wszędzie.

Skracanie tekstu wielokropkiem w Windows

Dlatego też musiało się znaleźć w sieci. Nie wszystkie decyzje Microsoftu są złe, jedną z nich było dodanie do CSS właściwości text-overflow, która po przybraniu wartości ellipsis powoduje dodanie znaku wielokropka, jeśli tekstu jest za dużo. Dodatkowymi zasadami jakie należy spełnić, to ustawić zwykły overflow na hidden oraz upewnić się, że tekst utworzy jedną linijkę za pomocą white-space.

  1. #hellip {
  2. width: 150px;
  3. white-space: nowrap;
  4. overflow: hidden;
  5. text-overflow: ellipsis;
  6. }

Właściwość ta jest tak oczywista, że została dodana do szkicu CSS3 i zaczyna być implementowana w innych przeglądarkach. Jedną z nich (bo nie jestem pewny czy pierwszą) jest Opera 9. Wykorzystując mechanizm rozszerzania CSS prezentuje wsparcie dla -o-text-overflow: ellipsis.

Bug dla Mozilli wisi od października poprzedniego roku i może po tym ruchu Opery dostaniemy -moz-text-overflow. Kto wie. :) Do tego czasu możemy korzystać ze skryptu JS napisanego dla Firefoksa. Dodatkowo możemy tam zobaczyć jak podpiąć skrypt JS tylko dla niego przez XBL.

Demo text-overflow działające na Internet Explorerze 6+, Operze 9 i Firefoksie.

Właściwość text-overflow można też z powodzeniem wykorzystać w tabelkach - tam chyba będzie najbardziej przydatna. Należy tylko pamiętać, że musimy dla takiej tabelki ustawić table-layout: fixed.

O wiele lepszy sposób dla Gecko (Firefoksa) wykorzystujący właściwości XUL.

Informacje i hiperłącza

Blog o projektowaniu zgodnych ze standardami stron internetowych.

Praktyczne przykłady, sztuczki CSS, sposoby obchodzenia błędów przeglądarek, lekki i nieinwazyjny JavaScript, użyteczny design, dostępność i skrypty użytkownika.

RSS

Informacje o wpisie

Napisał riddle 31 lipca 2006 o 01:06

Kategorie: CSS, Internet Explorer, Standardy sieciowe, Użyteczność, XML, XSL, XUL...

Dodaj do:

Wpisy archiwalne

Archiwum miesięczne

Dzięki!

Dodaj bloga do Technorati Favorites Dodaj bloga do Del.icio.us Blog należy do sieci 10przykazań.com

  1. W demie przy powiększaniu czcionki wielokropek wędruje w stronę środka wiersza [ff 1.5.0.5], to chyba niezamierzony efekt ;)

  2. No, wreszcie coś o czym nie wiedziałem, brawo ;-)
    Malutkie info: Nie działa w Konquerorze 3.5.3 [i prawodpodobnie żadnym poprzednim].

  3. Piotr Chmolowski 3 31 lipca 2006, 08:21

    Działa ładnie w Safari.

  4. W FF nie można zaznaczyć całego widocznego tekstu. Ale ogólnie to przydatna sprawa ;-) Dzięki.

  5. Nazgul: Jest problem z zaznaczaniem, ale ogólnie wielokropek dobrze się zachowuje na Fx 1.5. Powiększ sobie szerokość diva Web Developerem a potem powiększ i sam zobaczysz. :P

  6. A da się to zastosować do przycinania za dużych obrazów? (powiedzmy, że div do którego wstawiam img ma 200px a sam img ma już 350px)
    Jeśli tak, to… super! ;->

  7. Nie da się, to tylko działa na tekst. Ale jeśli spojrzysz na przykład na post http://perfectionorvanity.com/2006/07/20/nieinwazyjne-inicjaly-naglowkow/
    to zobaczysz, że górny obrazek ma chyba 1500px szerokości, a przyciąłem go do 515. ;) Jak? Zwyczajne overflow: hidden w CSS dla kontenera div.img. (Spójrz w kod, to nie gryzie. :P)

  8. Zadam bezsensowne pytanie: jest jakieś praktyczne zastosowanie tego bajera, czy to tylko css-lans?

    EDIT: Dopiero po krótkiej rozmowie i zamienieniu "150px" na "30%" widać po co to jest :p.

  9. Bartini naprawdę uważasz, że text-overflow jest zbędnym bajerem i dodanie jej do CSS3 jest pomyłką ?

  10. Chodziło mi tylko to, że ten bajer z obcinaniem tekstu z "..." na końcu jest bez większego sensu, gdy szerokość masz ustawioną na stałą wartość

  11. Fajne. Dobrze byłoby jeszcze po wskazaniu takiego miejsca myszą pokazać tooltip z pełnym tekstem - inaczej po prostu "wiem, że coś tam jest, ale nie wiem co". :)

  12. możesz zrobić albo :hover, gdzie się rozwinie w jedną linię, ale jako że ekspertem nie jestem to nie wiem jak to bedzie wygladac, ew. mozesz caly tekst wpisac w title="", tyle że to raczej mało efektywne

  13. Paweł 'SiD' Majczyk 13 31 lipca 2006, 23:09

    Najlepiej byłoby i dla hover i dla focus zdjąć nowrap, lecz nie wiem jak do z dostępnością wówczas. Czy screenreadery ustawiają kursor na tekście, czy też może czytają zawartość bez jakiejkolwiek ingerencji i dopiero na hasło reagują?

  14. Hmmm, to zadziwające jak ludzie potrafią z jednej bzdury zrobić coś tak skomplikowanego. Ten skrypt jest błe, nie da się zaznaczyć tekstu.

  15. Paweł 'SiD' Majczyk 15 01 sierpnia 2006, 20:02

    E tam sie nie da, trójklik i jest cały wiersz :-p
    Jednak trzeba przyznać, że w aktualnej formie nie kwalifikuje się do użytecznych, co nie oznacza, że podmiotem jest bzdura. Wręcz przeciwnie, nie znam bardziej istotnej rzeczy dla arkuszy styli jak właśnie prezentacja treści. Wspomnieć wypada, zważywszy, że to jak jest dziś, jutro nie musi być takie same, a potrzeba nie zniknie, póki nie zostanie zaspokojona.

  16. Wiecie co, mnie dziwi jedno. Jeśli popatrzeć sobie na chrome Firefoksa, to takie elementy jak label albo zakładki ładnie wytwarzają trzy kropki za sobą, jeśli tekstu jest za dużo. Szukałem w natywnych plikach CSS i XBL jakiegoś zachowania, które by wymuszało ucinanie, ale nie znalazłem. Bo wystarczy teraz tylko to odnaleźć i zaaplikować jako rozszerzenie Mozillowego CSS i na Fx/SM będzie działać. :) Pomysły?

    Co do zaznaczania - okej, ale jeśli mamy stylizowaną galerię CSS z grafikami i linkiem jako podpis, to niekoniecznie chcemy to zaznaczać - zwłaszcza że zaznaczanie tekstu z linku jest niewygodne, prawda? Tak więc możemy używać tego skryptu w pewnych przypadkach, a w innych po prostu wyłączyć i cieszyć się zwyczajnym ukrywaniem overflow-a na Fx/SM.

  17. Działa ładnie na Operze 9, ale znalazłem buga ;]
    Po zaznaczeniu tekstu, trzykropek znika. Ale to jeszcze rozumiem. Nie rozumiem jednak, czemu po zaznaczeniu i kliknięciu na "sti" (czyli tam gdzie wcześniej był trzykropek) znika zaznaczenie (no, to oczywiste, ie o to chodzi) ale nie pojawia się trzykropek ;) Przy kliknięciu gdziekolwiek indziej zaznaczenie znika i pojawia się trzykropek. A tak - nie. ;)

Dodaj komentarz

Do formatowania komentarzy używaj Textile (HTML nie działa). Szczególnie jeśli wklejasz większe fragmenty kodu. W razie niepewności użyj podglądu komentarza.

Wypowiedzi obraźliwe, infantylne oraz nie na temat będą moderowane – pisząc postaraj się zwiększyć wartość dyskusji.

Komentarze nie służą do wysyłania wiadomości albo informowania o błędach, itd. Chcesz coś mi napisać – skontaktuj się.