Hover în interfețe: ce este, tipuri de efecte și implementare

Autor: IT Sectr Publicat: 2026-08-03 Timp de citire: 6 min

Hover (hover) — este o pseudo-clasă CSS și o stare vizuală a unui element de interfață care se activează la trecerea cursorului mouse-ului. Acest mecanism oferă feedback utilizatorului, confirmând că elementul este gata de interacțiune. Conform MDN Web Docs (2026), pseudo-clasa :hover este suportată de toate browserele moderne și este unul dintre cei mai folosiți selectori CSS pentru crearea interactivității.

Principalele puncte

  • Hover — pseudo-clasa CSS :hover, activată la trecerea cursorului mouse-ului pe element
  • Feedback — hover confirmă că elementul este interactiv și gata de clic
  • Tranziții CSS — transition adaugă fluiditate efectelor hover, îmbunătățind percepția
  • Dispozitive tactile — pe ecranele mobile hover lipsește, fiind necesară o implementare alternativă
  • Tipuri de efecte — schimbarea culorii, umbrei, scalei, fundalului, marginii și textului

Ce este hover în web design

Hover (din engleză hover — a pluti) — reacția vizuală a unui element de interfață la trecerea cursorului mouse-ului peste el. Termenul este folosit atât pentru pseudo-clasa CSS :hover, cât și pentru starea elementului la trecerea cursorului.

Conceptul de hover a apărut în primele interfețe grafice Xerox Alto (1973) și a fost standardizat pe web odată cu apariția CSS2 în 1998. De atunci, hover a devenit o parte integrantă a experienței utilizatorului pe desktop.

Conform CSS Usage Statistics (2025), 94% din site-urile din top 1000 folosesc pseudo-clasa :hover pentru cel puțin un element. Cel mai frecvent, hover este utilizat pentru butoane (89%), linkuri (85%) și carduri (62%).

Diferența dintre hover și alte stări

Hover ≠ active. :hover se activează la trecerea cursorului, :active — în momentul clicului. :focus se activează la focalizarea cu tastatura. Fiecare stare își rezolvă sarcina. Hover este previzualizare, active este confirmarea acțiunii.

Pseudo-clasa :hover în CSS

Pseudo-clasa :hover în CSS aplică stiluri unui element atunci când utilizatorul trece cursorul mouse-ului peste el. Funcționează cu orice element HTML, dar cel mai des este folosită cu elemente interactive.

css
/* Basic hover implementation */
.button {
    background: #4A90D9;
    color: white;
    padding: 12px 24px;
    border: none;
    transition: all 0.3s ease;
}

.button:hover {
    background: #357ABD;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(74,144,217,0.4);
}

Specificitatea selectorului :hover — aceeași ca a clasei (0,1,0). Dacă trebuie să suprascrieți hover-ul pentru un element specific, folosiți un selector cu specificitate mai mare. Ordinea declarațiilor este importantă: dacă declarați :hover după :focus, hover-ul poate să nu funcționeze la focalizare.

Pseudo-clase combinate

:hover poate fi combinat cu alte pseudo-clase pentru a crea logică complexă. De exemplu, .card:hover .card__title schimbă stilul titlului din interiorul cardului la trecerea cursorului peste întregul card. Acest lucru permite crearea de efecte cu animație imbricată.

Tipuri de efecte hover

Efectele hover se împart în mai multe categorii după tipul proprietății modificate. Fiecare tip este potrivit pentru scenarii diferite și creează o anumită senzație utilizatorului.

Tip efectProprietate CSSExemplu de aplicare
Cromaticbackground, colorButonul își schimbă culoarea fundalului la trecerea cursorului
Umbrăbox-shadowCardul se ridică datorită umbrei
Scalătransform: scaleIconița se mărește la trecerea cursorului
Deplasaretransform: translateElementul se deplasează în sus sau lateral
Subliniereborder-bottom, underlineLinkul primește subliniere dedesubt
Filtrufilter: brightnessImaginea devine mai luminoasă sau mai întunecată
Gradientbackground-imageFundalul se schimbă la trecerea cursorului

Cel mai eficient tip — combinația efectelor cromatice și de umbră. Material Design recomandă utilizarea modificării înălțimii umbrei ca tip principal de feedback hover.

Conform Google Material Design (2024), efectul hover trebuie să fie vizibil, dar care nu distrage atenția. Durata recomandată a animației — 200–300 de milisecunde. Efectele prea rapide (sub 100 ms) pot trece neobservate, cele prea lente (peste 500 ms) irită utilizatorul.

Tranziții CSS pentru efecte fluide

Proprietatea CSS transition face efectele hover fluide, animând schimbarea proprietăților în timp. Fără transition, hover-ul acționează instantaneu, ceea ce arată sacadat și este neplăcut pentru ochi.

css
/* Different transitions per property */
.card {
    transition:
        box-shadow 0.3s ease-out,
        transform 0.2s ease-out,
        background 0.15s linear;
}

.card:hover {
    box-shadow: 0 8px 30px rgba(0,0,0,0.15);
    transform: translateY(-4px);
}

Durata transition depinde de context. Pentru elemente mici (iconițe, linkuri) — 150–200 ms. Pentru elemente mari (carduri, ferestre modale) — 250–350 ms. Funcția easing ease-out încetinește treptat animația la sfârșit, creând o senzație naturală.

Practică recomandată — specificați transition pentru fiecare proprietate animată separat. Proprietatea all este convenabilă în faza de dezvoltare, dar în producție este mai bine să definiți proprietăți specifice pentru animație, pentru a evita efecte neașteptate.

Hover pe dispozitive tactile

Pe dispozitivele tactile conceptul de hover nu există: nu există cursor care poate fi trecut peste un element. Atingerea elementului activează imediat click, ocolind starea hover. Acest lucru creează probleme dacă interfața se bazează exclusiv pe hover.

Conform StatCounter (2026), 62% din traficul web global provine de pe dispozitive mobile. A ignora lipsa hover-ului pe ecrane tactile înseamnă a pierde controlul asupra UX pentru majoritatea utilizatorilor.

css
/* Disable hover on touch devices */
@media (hover: none) and (pointer: coarse) {
    .button:hover {
        background: initial;
        transform: none;
    }
}

Interogarea media hover: none permite determinarea că dispozitivul nu suportă trecerea cursorului. Pe astfel de dispozitive, efectele hover sunt dezactivate, iar interacțiunea se bazează pe stările :active și :focus. Soluție alternativă — afișarea conținutului hover la atingere (prima atingere arată hover-ul, a doua execută acțiunea), dar acest model înrăutățește UX.

Accesibilitatea efectelor hover

Accesibilitatea hover — un aspect critic adesea neglijat. Utilizatorii care controlează interfața cu tastatura nu pot activa :hover. Funcțiile disponibile doar prin hover devin inaccesibile pentru ei.

Regula WCAG 2.2 (Success Criterion 1.4.13 — Content on Hover or Focus): conținutul care apare la hover trebuie să fie accesibil și la focus. Dacă hover-ul arată informații suplimentare (tooltip, meniu derulant), aceleași informații trebuie să fie accesibile la :focus.

css
/* Hover + focus for accessibility */
.tooltip-trigger:hover .tooltip,
.tooltip-trigger:focus .tooltip {
    opacity: 1;
    visibility: visible;
}

/* Disable animation for vestibular disorder */
@media (prefers-reduced-motion: reduce) {
    *:hover {
        transition: none;
    }
}

Interogarea media prefers-reduced-motion — respectați setările de sistem ale utilizatorilor. Dacă utilizatorul a dezactivat animația în sistem, efectele hover trebuie aplicate instantaneu, fără transition. Acest lucru ajută persoanele cu tulburări vestibulare.

Recomandări suplimentare: nu utilizați hover pentru funcții critice, nu folosiți doar culoarea pentru a transmite informații la hover (adăugați o iconiță sau text) și asigurați contrast suficient pentru stările hover.

Întrebări frecvente

Care este diferența dintre :hover și :focus în CSS?

:hover se activează la trecerea mouse-ului peste element. :focus se activează când elementul primește focalizarea — la tabularea cu tastatura sau după clic. Pentru accesibilitate, este important să duplicați efectele hover prin :focus.

Se poate folosi hover pe dispozitive mobile?

Pe dispozitivele tactile, hover-ul funcționează instabil: prima atingere activează :hover, a doua — click. Acest lucru creează confuzie. Se recomandă utilizarea interogării media @media (hover: none) pentru dezactivarea efectelor hover pe ecrane tactile.

Cum se face un efect hover în JavaScript?

Utilizați evenimentele mouseenter (trecerea cursorului) și mouseleave(îndepărtarea cursorului). Spre deosebire de hover-ul CSS, JavaScript oferă control complet asupra animației și permite crearea de efecte secvențiale complexe cu întârzieri.

De ce nu funcționează hover pe Safari mobil?

iOS Safari are o procesare specială pentru :hover. După atingere, elementul intră în starea :hover și rămâne în ea până la următoarea atingere. Acest lucru poate duce la blocarea stilurilor hover. Soluția — utilizați @media (hover: hover) pentru a aplica hover doar pe dispozitivele cu suport pentru trecerea cursorului.

Care easing este cel mai potrivit pentru efectele hover?

ease-out (cubic-bezier(0, 0, 0.2, 1)) — alegerea optimă pentru hover: start rapid și încetinire treptată la final. ease-in-out este potrivit pentru efecte cu două faze (apariție și dispariție). Evitați linear — arată nenatural.

Concluzii

  • Hover — pseudo-clasa CSS :hover, care oferă feedback la trecerea cursorului pe element
  • Efecte principale — schimbarea culorii, umbrei, scalei, deplasarea, sublinierea și filtrele
  • Tranziții CSS — transition adaugă fluiditate cu durata optimă de 200–300 ms
  • Dispozitive tactile — nu suportă hover, utilizați interogarea @media (hover: none)
  • Accesibilitate — duplicați hover prin :focus, respectați prefers-reduced-motion
  • Cea mai bună practică — combinația efectului cromatic și de umbră cu ease-out la 250 ms

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și