Hover (hover) — is een CSS-pseudoklasse en visuele toestand van een interface-element die wordt geactiveerd wanneer de muisaanwijzer erover beweegt. Dit mechanisme geeft feedback aan de gebruiker en bevestigt dat het element klaar is voor interactie. Volgens MDN Web Docs (2026), pseudoklasse :hover wordt ondersteund door alle moderne browsers en is een van de meest gebruikte CSS-selectors voor het creëren van interactiviteit.
Belangrijkste punten
Hover (van Engels hover — zweven) — visuele reactie van een interface-element op het bewegen van de muisaanwijzer. De term wordt gebruikt voor zowel de CSS-pseudoklasse :hover als de toestand van het element bij aanwijzen.
Het concept van hover verscheen in vroege grafische interfaces van Xerox Alto (1973) en werd gestandaardiseerd op het web met de komst van CSS2 in 1998. Sindsdien is hover een integraal onderdeel geworden van de gebruikerservaring op desktops.
Volgens CSS Usage Statistics (2025) gebruikt 94% van de sites in de top 1000 de pseudoklasse :hover voor ten minste één element. Hover wordt het meest toegepast voor knoppen (89%), links (85%) en kaarten (62%).
Hover ≠ active. :hover wordt geactiveerd bij aanwijzen, :active — op het moment van klikken. :focus wordt geactiveerd bij focus via toetsenbord. Elke toestand lost zijn eigen taak op. Hover is voorbeeld, active is bevestiging van actie.
Pseudoklasse :hover in CSS past stijlen toe op een element wanneer de gebruiker er met de muisaanwijzer overheen beweegt. Het werkt met elk HTML-element, maar wordt meestal gebruikt met interactieve elementen.
/* 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);
}
Specificiteit van selector :hover — hetzelfde als klasse (0,1,0). Als je hover voor een specifiek element wilt overschrijven, gebruik dan een selector met hogere specificiteit. Volgorde van declaratie is belangrijk: als je :hover na :focus declareert, werkt hover mogelijk niet bij focus.
:hover kan worden gecombineerd met andere pseudoklassen voor complexe logica. Bijvoorbeeld .card:hover .card__title verandert de stijl van de titel in de kaart bij hover over de hele kaart. Dit maakt effecten met geneste animatie mogelijk.
Hover-effecten worden onderverdeeld in verschillende categorieën op basis van het type eigenschap dat wordt gewijzigd. Elk type is geschikt voor verschillende scenario's en creëert een bepaald gevoel bij de gebruiker.
| Type effect | CSS-eigenschap | Voorbeeld toepassing |
|---|---|---|
| Kleur | background, color | Knop verandert achtergrondkleur bij hover |
| Schaduw | box-shadow | Kaart komt omhoog door schaduw |
| Schaal | transform: scale | Pictogram wordt groter bij hover |
| Verplaatsing | transform: translate | Element verschuift omhoog of opzij |
| Onderstreping | border-bottom, underline | Link krijgt onderstreping van onderen |
| Filter | filter: brightness | Afbeelding wordt helderder of donkerder |
| Gradiënt | background-image | Achtergrond verandert bij hover |
Meest effectieve type — combinatie van kleur- en schaduweffect. Material Design beveelt het gebruik van schaduwhoogteverandering aan als primair type hover-feedback.
Volgens Google Material Design (2024) moet een hover-effect zichtbaar zijn maar niet afleiden. Aanbevolen animatieduur — 200–300 milliseconden. Te snelle effecten (minder dan 100 ms) kunnen onopgemerkt blijven, te langzame (meer dan 500 ms) irriteren de gebruiker.
CSS-eigenschap transition maakt hover-effecten vloeiend door eigenschapsveranderingen in de tijd te animeren. Zonder transition werkt hover onmiddellijk, wat er schokkerig uitziet en onaangenaam is voor het oog.
/* 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);
}
Duur van transition hangt af van context. Voor kleine elementen (pictogrammen, links) — 150–200 ms. Voor grote elementen (kaarten, modale vensters) — 250–350 ms. Easing-functie ease-out vertraagt de animatie geleidelijk aan het einde, wat een natuurlijk gevoel creëert.
Aanbevolen praktijk — specificeer transition voor elke geanimeerde eigenschap afzonderlijk. De eigenschap all is handig in de ontwikkelfase, maar in productie is het beter om specifieke eigenschappen voor animatie te definiëren om onverwachte effecten te voorkomen.
Op aanraakapparaten bestaat het concept van hover niet: er is geen cursor om over een element te bewegen. Aanraken van een element activeert onmiddellijk click, waarbij hover wordt overgeslagen. Dit veroorzaakt problemen als de interface uitsluitend op hover vertrouwt.
Volgens StatCounter (2026) is 62% van het wereldwijde webverkeer afkomstig van mobiele apparaten. Het negeren van het ontbreken van hover op touch-schermen betekent verlies van controle over UX voor de meeste gebruikers.
/* Disable hover on touch devices */
@media (hover: none) and (pointer: coarse) {
.button:hover {
background: initial;
transform: none;
}
}
Mediaquery hover: none maakt het mogelijk te bepalen dat het apparaat geen aanwijzen ondersteunt. Op dergelijke apparaten worden hover-effecten uitgeschakeld en is interactie gebaseerd op :active en :focus. Alternatieve oplossing — hover-inhoud tonen bij aanraking (eerste aanraking toont hover, tweede voert actie uit), maar dit patroon verslechtert UX.
Toegankelijkheid van hover — een kritisch aspect dat vaak over het hoofd wordt gezien. Gebruikers die de interface met het toetsenbord bedienen, kunnen :hover niet activeren. Functies die alleen via hover beschikbaar zijn, worden voor hen ontoegankelijk.
WCAG 2.2-regel (Success Criterion 1.4.13 — Content on Hover or Focus): inhoud die verschijnt bij hover moet ook toegankelijk zijn bij focus. Als hover extra informatie toont (tooltip, dropdown-menu), moet dezelfde informatie beschikbaar zijn bij :focus.
/* 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;
}
}
Mediaquery prefers-reduced-motion — respecteer systeeminstellingen van gebruikers. Als de gebruiker animatie in het systeem heeft uitgeschakeld, moeten hover-effecten onmiddellijk worden toegepast zonder transition. Dit helpt mensen met vestibulaire stoornissen.
Aanvullende aanbevelingen: gebruik hover niet voor kritieke functies, gebruik niet alleen kleur om informatie over te brengen bij hover (voeg pictogram of tekst toe) en zorg voor voldoende contrast voor hover-toestanden.
Veelgestelde vragen
:hover wordt geactiveerd bij bewegen van muis over element. :focus wordt geactiveerd wanneer element focus krijgt — bij tabben met toetsenbord of na klikken. Voor toegankelijkheid is het belangrijk hover-effecten te dupliceren via :focus.
Op touch-apparaten werkt hover onstabiel: eerste aanraking activeert :hover, tweede — click. Dit veroorzaakt verwarring. Het wordt aanbevolen de mediaquery @media (hover: none) te gebruiken om hover-effecten op aanraakschermen uit te schakelen.
Gebruik de gebeurtenissen mouseenter (aanwijzen) en mouseleave (weg bewegen). In tegenstelling tot CSS-hover geeft JavaScript volledige controle over animatie en maakt het mogelijk complexe sequentiële effecten met vertragingen te creëren.
iOS Safari heeft speciale verwerking van :hover. Na aanraking gaat het element in :hover-toestand en blijft daarin tot de volgende aanraking. Dit kan leiden tot blijvende hover-stijlen. Oplossing — gebruik @media (hover: hover) om hover alleen toe te passen op apparaten die aanwijzen ondersteunen.
ease-out (cubic-bezier(0, 0, 0.2, 1)) — optimale keuze voor hover: snelle start en geleidelijke vertraging aan het einde. ease-in-out is geschikt voor effecten met twee fasen (verschijnen en verdwijnen). Vermijd linear — het ziet er onnatuurlijk uit.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook