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.

Psudoklasy pozwalają na lekkie odświeżenie reguł CSS, bez dodawanie zbędny klas do kodu XHTML. Dodają też funkcjonalność, której normalnie byłoby szukać tylko z kodem manipulującym DOM. Pseudoklasy następują od razu po elemencie (tagu HTML, klasie albo identyfikatorze). Przykład - a:link

Zaczniemy od linków - hiperłączy. Dość często początkujący zastanawiają się jak usunąć z nich podkreślenie - wystarczy zwykła deklaracja text-decoration: none.

  1. :link

Ta pseudoklasa przydatna jest do określania czy dany element jest linkiem. Stosuje się go w połączeniu z elementem a.

  1. :visited

Banalna sprawa - czy link był odwiedzony. Po ludzku - czy znajduje się w historii przeglądarki.

  1. :hover

Stan, w którym kursor myszki jest nad linkiem. Często wykorzystywany do zmiany koloru, wywoływania podkreślenia i inne takie. Internet Explorer jest przeglądarką, która rozumie :hover tylko na linkach. Tak, to wielkie ograniczenie. Można jednak wykorzystać swoją wiedzę i na przykład łącząć regułę display: block wypełnić nadrzędny element li, aby stworzyć menu, reagujące na myszkę pod IE także. Wykorzystując pseudoklasę :hover można z powodzeniem tworzyć efekty rollover, bez JavaScript. Wystarczy zadeklarować, że dany element ma zachowanie blokowe (display: block), wymiary (width, height) i tło (background: url() left top no-repeat) i zmieniać tło dla :hover.

  1. :active

Stan aktywny. W większości przeglądarek kliknięcie na link i nie puszczenie przycisku wywołuje ten stan. Internet Explorer 6 dla Windows ma dziwny błąd związany z tą pseudoklasą - gdy klikniemy na link i wybierzemy Wstecz z paska narzędziowego, link który kliknęliśmy będzie "podświetlony" w sposób określony przez tą regułę. Cóż - czasem efekt może być ciekawy i pewnie tym kierowali się koderzy MS.

Kolejności poszczególnych pseudoklas dla linków jest ważna. Otóż powinno się najpierw stosować pseudoklasę :link, potem :visited, :hover i :active. Właśnie tak ja wylistowałem je w tekście. Niektóre starsze przeglądarki mają bardzo dziwaczne błędy z tym związane. Aby zapamiętać kolejność pseudoklas, można sobie skojarzyć ich pierwsze litery, jak radzi Jeffrey Zeldman. LV, HA! - LoVe, HA! Takie małe wyznanie. :P

  1. :focus

Ta pseudoklasa powinna być wykorzystywana dla linków razem z :hover (a:focus, a:hover). Otóż istnieje całkiem spora grupa ludzi, która preferuje używanie klawiatury do obsługi strony. Przeskakując Tab przez linki, bez tej deklaracji połączonej z :hover, nie zmienią ich stanu.

Pseudoklasa :focus także często jest mylona z :hover podczas obsługi formularzy. Najlepszym efektem jest, gdy po najechaniu myszką (:hover) na pole formularza podświetla on się lekko, a po kliknięciu - ustawieniu fokusu (:focus) podświetla się mocniej. To tylko efekt wizualny, gorzej gdy formularz jest prawie niewidoczny i dopiero nakierowanie myszką go podświetla. Bez połączenia :focus z :hover skutkuje tym, że musimy mieć kursor myszki w polu formularza, inaczej nic nie widać. Jest to typowy błąd, którego należy unikać.

Ciąg dalszy nastąpi...

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 19 czerwca 2005 o 10:49

Kategorie: CSS, Standardy sieciowe

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. Ciekawe. W Ff coś takiego:
    #content a:focus:hover {
    color: #5f5f5f;
    }
    nie działa... Kolor odnośnika nie zmienia się ani po najechaniu na niego myszką, ani tabem.

  2. Heh, czyli to tylko teoria. Dzięki za informację.

  3. to chyba nie powinno działać :/
    w teorii mogłoby gdybyś przejechał tabem i najechał myszką (czyli spełnił oba warunki), ale kto by o tym myślał ;)

  4. Zgadza się, nie powinno działać. Żeby osiągnąć zamyślony efekt:
    #content a:focus, #content a:hover { color: #5f5f5f; }

  5. Mam takie pytanie jak mianowicie zablokować focus obiektu. Mam na myśli to aby obiektu niedało się zaznaczyć.

  6. chyba Love Hate? :)

  7. Nie, Love Ha! ;) Przeczytaj książkę Zeldmana. ;)

  8. czytałem, ale jakoś samo mi się nasuwa bardziej Love&Hate niż jakieś Love ha! :)

  9. U mnie a:link pojawia się również w adresie emailowym, a nie tylko (jak chciałem w pasku menu) :(
    Musiałem ręcznie dodać styl specjalnie do adresów emailowych :(

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ę.