Pseudoklasa CSSPseudoklasy

:hover

Pasuje do elementu, nad którym znajduje się kursor myszy. Podstawa efektów najechania na przyciski, linki i karty.

Na tej stronie

Przykład

#
CSS
.btn {
  background: #7c3aed;
  transition: background-color 0.2s, transform 0.2s;
}

.btn:hover {
  background: #6d28d9;
  transform: translateY(-2px);
}
Podgląd

Definicja i zastosowanie

#

Pseudoklasa :hover włącza się, gdy użytkownik wskazuje element kursorem, i wyłącza, gdy kursor odjedzie. Pasuje do niej nie tylko sam wskazany element, ale też wszyscy jego przodkowie, bo kursor jest nad nimi wszystkimi naraz. Dzięki temu .card:hover .icon zmieni ikonę, gdy kursor znajdzie się gdziekolwiek nad kartą.

Najczęściej łączy się ją z transition, żeby zmiana koloru, cienia czy położenia była płynna. Przy linkach pamiętaj o kolejności reguł: :link, :visited, :hover, :active. Przy równej specyficzności wygrywa reguła zapisana później, więc :visited postawione za :hover zasłoniłoby efekt najechania.

Na ekranach dotykowych kursora nie ma. Przeglądarki zwykle symulują :hover po stuknięciu, a stan potrafi „przykleić się” do elementu, dopóki nie stukniesz gdzie indziej. Dlatego ważnych treści nie ukrywaj za samym najechaniem, a efekty tylko dla myszy zamknij w @media (hover: hover).

Osoby korzystające z klawiatury też nie wywołają :hover. Efekt najechania na elemencie interaktywnym warto powtórzyć w :focus-visible.

Składnia

#
Składnia
selektor:hover { właściwość: wartość; }

Typowe zastosowania

#
  • .demo:hover

    Najedź kursorem na kartę: zmienia kolor i lekko się unosi. Płynność daje transition ustawione w stylu bazowym.
  • .demo:hover .icon

    Najechanie na kartę zmienia element w jej środku. Ikona reaguje, gdy kursor jest gdziekolwiek nad kartą.
  • .icon:hover

    Tylko sama ikona. Karta się nie zmienia, dopóki kursor nie dotknie gwiazdki.
  • .demo:not(:hover)

    Odwrócenie: karta jest przygaszona i rozjaśnia się dopiero pod kursorem.
  • @media (hover: hover)

    Efekt tylko na urządzeniach z kursorem, np. z myszą albo gładzikiem. Na telefonie karta się nie zmieni.

Typowe zastosowania w praktyce

#

.demo:hover

Najedź kursorem na kartę: zmienia kolor i lekko się unosi. Płynność daje transition ustawione w stylu bazowym.
.demo:hover {
  background: #7c3aed;
  transform: translateY(-3px);
}

.demo:hover .icon

Najechanie na kartę zmienia element w jej środku. Ikona reaguje, gdy kursor jest gdziekolwiek nad kartą.
.demo:hover .icon { background: #f59e0b; rotate: 15deg; }

.icon:hover

Tylko sama ikona. Karta się nie zmienia, dopóki kursor nie dotknie gwiazdki.
.icon:hover { background: #10b981; scale: 1.25; }

.demo:not(:hover)

Odwrócenie: karta jest przygaszona i rozjaśnia się dopiero pod kursorem.
.demo:not(:hover) { opacity: 0.5; }

@media (hover: hover)

Efekt tylko na urządzeniach z kursorem, np. z myszą albo gładzikiem. Na telefonie karta się nie zmieni.
@media (hover: hover) {
  .demo:hover { background: #0ea5e9; }
}

Więcej przykładów

#
Przyciski widoczne po najechaniu i przy obsłudze klawiaturą
CSS
.lesson .actions {
  opacity: 0;
  transition: opacity 0.2s;
}

.lesson:hover .actions,
.lesson:focus-within .actions {
  opacity: 1;
}
Podgląd

Najedź na wiersz albo kliknij w podgląd i naciśnij Tab. Przyciski pojawiają się w obu przypadkach, bo reguła łączy :hover z :focus-within.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Nie chowaj ważnych informacji ani przycisków wyłącznie za :hover. Na telefonie i przy obsłudze klawiaturą użytkownik ich nie zobaczy.
  • Efekt najechania powtórz dla klawiatury: .btn:hover, .btn:focus-visible { … }.
  • Przy najechaniu zmieniaj transform, opacity i kolory. Zmiana width czy margin przesuwa sąsiednie elementy i potrafi szarpać układem.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.