Sprawdź najnowsze wpisy:
SzybkiTrik: Obrazek z efektem hover (rollover) w CSS

Często w przypadku menu strony, bannerów czy przycisków potrzebujesz reakcji elementu po wskazaniu myszką. Najczęściej jest to zmiana tła lub koloru czcionki. Przy pomocy prostego triku można wykonać to bez użycia javascript w czystym CSS i XHTML.

Musisz tylko rozwiązać dwa podstawowe problemy. W końcu chcesz, żeby Google odczytało anchor linku (ewentualnie użytkownicy korzystający z przeglądarek tekstowych lub screenreader’ów). Drugi problem to, gdy użyjesz 2 plików graficznych w momencie wskazania elementu (hover / rollover)  nastąpi wczytanie drugiego obrazka, co objawia się chwilowym jego zniknięciem.

Skoro już wiesz w czym problem, przejdźmy do działania. Rozwiązanie jest naprawdę proste.

Zacznijmy od XHTML będzie wyglądać tak (dlaczego dałem span dowiesz się poniżej):

<a class="link" href="#"><span>Websta.pl</span></a>

Teraz w Photoshopie przygotuj przycisk. Mój ma 100px na 40px.

Przycisk

Po najechaniu myszką będzie wyglądać tak (też 100px na 40px):

Przycisk

Połącz dwa obrazki w jeden (teraz mój ma 100px na 80px):

rollover_css

Teraz już tylko kilka linii w CSS i gotowe.

a.link
{
background: url(obrazek.jpg) no-repeat;
display:block;
height:40px;
overflow:hidden;
width:100px;
}
a.link:hover
{
background-position: 0px -40px;
}
a.link span
{
display:block;
text-indent: -9999px;
}

I to tyle. Poniżej działający przykład:

Websta.pl

Jak to działa?

Zasadę działania przedstawia obrazek:

Zasada działania rollover(hover)

Element span został ukryty poprzez przesunięcie poza przycisk, dzięki temu przycisk będzie widoczny dla osób używających (sporej części) przeglądarek tekstowych i screenreaderów (no i dla googiela).

Sposób może nie jest odkrywczy, ale często spotykam takie tematy na forach, co oznacza, że nie każdy go zna.

Na koniec jeszcze link do ciekawych testów i kilku innych metod:
http://css-tricks.com/nine-techniques-for-css-image-replacement/

Tradycyjnie zapraszam do dyskusji.

Dodaj do:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • LinkedIn
  • Technorati
  • Wykop
  • RSS
  • Twitter
  • BLIP - Bardzo Lubię Informować Przyjaciół
  • Wrzuć to na Flakera - powiadom swoich Znajomych
  • grono.net - internetowa społeczność przyjaciół
  • Dodaj link - Linkr.pl - tylko ciekawe linki

Zapisz się na newsletter

Nienawidzę spamu tak samo jak Ty, dlatego obiecuję, że nigdy nie sprzedam, ani nie udostępnię nikomu Twojego adresu e-mail.

(W każdej chwili możesz się wypisać, klikając link na końcu każdego maila.)

Tagi: , ,


  1. SkiX (Reply) niedziela 8 Listopad , 2009

    Świetne, dzięki!

  2. Asia (Reply) poniedziałek 9 Listopad , 2009

    Świetny opis,
    Dziękuję

  3. Astroni (Reply) wtorek 25 Maj , 2010

    Kolejny wynalazek, który chodzi także pod Explorerem – dzięki :)

    • web (Reply) niedziela 12 Grudzień , 2010

      witam jak połączyć te odnośniki pod sobą żeby nie było odstępu

  4. Mirek (Reply) piątek 21 Styczeń , 2011

    Witam….

    Mam pewne pytanie związane z tym sposobem.

    Otóż mam takich obrazków pięć, ułożone w jednej linii na dole strony.
    Wszystkie są zdefiniowane jako klasa “partnerzy”. W CSS odpowiednio tak samo. Nie są traktowane osobno (nie wiem czy się jasno wyrażam. Czy aby mieć taki efekt, muszę ustanowić siedem osobnych “klas” dla każdego obrazka i w html i CSS (odrębne obrazki, url)? Czy da się to jakoś pożenić?

    • Websta (Reply) wtorek 25 Styczeń , 2011

      Raczej będziesz musiał dać każdemu osobne id lub class.
      Natomiast jak chodzi o “żenienie” to po części się właśnie tak robi. Łączy się przyciski w jeden plik graficzny i manipuluje pozycją tła. Wpisz w google “CSS Sprites” i zobaczysz o co chodzi ;)

  5. krisunio (Reply) poniedziałek 31 Styczeń , 2011

    Dzięki wielkie :)

  6. Marek (Reply) czwartek 17 Marzec , 2011

    Wspaniale działa, dziękuję!

  7. kolo (Reply) wtorek 7 Czerwiec , 2011

    a co z IE??? Nie dziala!!!

    • Websta (Reply) wtorek 7 Czerwiec , 2011

      Tak? W jakim IE? U mnie działa w każdym.

  8. Avigo (Reply) czwartek 29 Grudzień , 2011

    Mi rozwala stronę :(

  9. Recommended Websites…

    [...]below you’ll find the link to some sites that we think you should visit[...]…

  10. … [Trackback]…

    [...] Read More here: websta.pl/szybkie-triki/szybkitrik-obrazek-z-efektem-hover-rollover-w-css [...]…