Markt
Prijzen
InloggenBegin
PraktijkgidsCSS en web
CSS en web

CSS-verloop hover-effect: vier manieren om het te animeren

Schrijf een nieuw verloop in :hover en het springt in plaats van te glijden. Browsers kunnen het ene verloop niet in het andere laten overgaan, maar wel een verloop verschuiven, laten infaden of de kleuren erin animeren. Hier is elke methode, met code.

GradientlyGeverifieerd Gradiently-account·1 oktober 2026·5 min lezen
Cover: Snow Sanctuary · GR·5830·QE

De korte versie

  • Een CSS-verloop hover-effect kun je niet maken door background-image te laten overgaan, omdat browsers verlopen direct verwisselen in plaats van ze te interpoleren.
  • De meest compatibele techniek is een te groot verloop met een transition op background-position, waarmee nieuwe kleuren in beeld schuiven.
  • Kleurstops of hoeken registreren met @property laat de browser ze soepel laten overgaan, en werkt in alle huidige grote browsers.
  • De dekking van een tweede verloop op een pseudo-element laten infaden is de goedkoopste techniek om te renderen, omdat veranderingen in dekking niet opnieuw tekenen.
  • Hover-effecten horen in een hover-mediaquery te staan en prefers-reduced-motion te respecteren.
Op deze pagina
Waarom transition niet werkt op verlopenTechniek 1: een te groot verloop verschuivenTechniek 2: kleurstops animeren met @propertyTechniek 3: twee verlopen crossfadenTechniek 4: een gloed die de cursor volgtEen techniek kiezenTouchschermen en verminderde beweging

Een CSS-verloop hover-effect heeft een omweg nodig, want browsers laten background-image niet overgaan: verander het verloop in :hover en het springt. Vier technieken geven een soepel resultaat. Schuif een te groot verloop met background-position, animeer geregistreerde kleurstops met @property, laat een tweede verloop op een pseudo-element crossfaden, of verplaats een radiale gloed met de cursor. Elke past bij andere elementen, en alle staan hieronder met code.

Waarom transition niet werkt op verlopen

Voor de browser is een verloop een afbeelding. Hij weet hoe hij een getal of een kleur interpoleert, maar niet de ene afbeelding in de andere, dus background-image wordt niet geïnterpoleerd en het nieuwe verloop vervangt het oude direct. Custom properties binnen het verloop gedragen zich hetzelfde, tenzij je ze registreert, omdat een niet-geregistreerde property gewoon tekst is.

css
/* This snaps, with no easing */
.btn {
  background-image: linear-gradient(135deg, #1e1b4b, #6d28d9);
  transition: background-image 400ms ease;
}
.btn:hover {
  background-image: linear-gradient(135deg, #6d28d9, #f472b6);
}
De transition-regel wordt voor verlopen genegeerd. Elke techniek hieronder werkt hier omheen.
De twee staten die in de voorbeelden worden gebruikt. Het doel is een soepele reis van het linkerstaaltje naar het rechter.

Techniek 1: een te groot verloop verschuiven

Maak de achtergrond groter dan het element, schilder beide staten erin en verschuif hem dan. background-position kan overgaan, dus de nieuwe kleuren glijden binnen. Het werkt in elke browser en vraagt geen registratie.

css
.btn {
  background-image: linear-gradient(90deg, #1e1b4b 0%, #6d28d9 50%, #f472b6 100%);
  background-size: 200% 100%;
  background-position: 0% 50%;
  transition: background-position 500ms ease;
}

.btn:hover {
  background-position: 100% 50%;
}
In rust zie je de linkerhelft, indigo naar violet. Bij hover schuift de rechterhelft, violet naar roze, op zijn plek.
De volledige strook van 200%linear-gradient(90deg, #1e1b4b 0%, #6d28d9 50%, #f472b6 100%)
Dit is de hele achtergrond. De knop toont er maar de helft van tegelijk.

De beweging leest als een veeg, wat past bij knoppen en links. Het is minder overtuigend op grote kaarten, waar je het verloop ziet reizen. background-position animeren tekent opnieuw, wat prima is voor kleine elementen; gebruik voor een groot oppervlak techniek 3. Verloopknoppen in CSS heeft meer knoppatronen hierop gebouwd.

Techniek 2: kleurstops animeren met @property

Registreer de stopkleuren als getypeerde custom properties en de browser kan ze interpoleren. Het verloop verandert dan ter plekke van kleur, zonder schuiven. @property werkt in alle huidige grote browsers; oudere springen gewoon, wat een acceptabele terugval is voor een hover. De registratieregels staan in CSS @property.

css
@property --stop-a {
  syntax: "<color>";
  inherits: false;
  initial-value: #1e1b4b;
}

@property --stop-b {
  syntax: "<color>";
  inherits: false;
  initial-value: #6d28d9;
}

.card {
  background-image: linear-gradient(135deg, var(--stop-a), var(--stop-b));
  transition: --stop-a 450ms ease, --stop-b 450ms ease;
}

.card:hover {
  --stop-a: #6d28d9;
  --stop-b: #f472b6;
}
Elke stop vloeit onafhankelijk. Geef ze verschillende duurtijden en de kleur lijkt van de ene hoek naar de andere te stromen.

Dezelfde truc animeert de hoek. Registreer --angle met syntax: "<angle>", gebruik hem in linear-gradient(var(--angle), ...) en verander hem bij hover: een verloop dat van 135 naar 225 graden draait als de aanwijzer arriveert is een subtiele, verzorgde toets voor kaarten en verloopranden.

Beide technieken tot nu toe werken ook op verlooptekst. Tekst die met background-clip: text is uitgesneden toont wat de achtergrond doet, dus een schuifbeweging of stopovergang op een kop laat de kleur bij hover door de letters lopen. Houd de verandering mild op koppen die mensen moeten lezen, en zorg dat beide staten contrast houden tegen de pagina.

Techniek 3: twee verlopen crossfaden

Zet het hover-verloop op een pseudo-element boven de basis en laat de dekking infaden. Veranderingen in dekking worden door de compositor afgehandeld zonder opnieuw tekenen, dus dit is de soepelste keuze voor grote kaarten, hero-panelen en alles in een lang raster.

css
.tile {
  position: relative;
  isolation: isolate;
  background-image: linear-gradient(135deg, #1e1b4b, #6d28d9);
}

.tile::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background-image: linear-gradient(135deg, #6d28d9, #f472b6);
  opacity: 0;
  transition: opacity 400ms ease;
}

.tile:hover::before {
  opacity: 1;
}
z-index: -1 met isolation: isolate houdt het pseudo-element achter de tekst van de tegel maar boven het basisverloop.

Techniek 4: een gloed die de cursor volgt

Een radiaal verloop dat met custom properties wordt gepositioneerd kan de aanwijzer volgen. Stel --x en --y in met een klein script en het licht beweegt met de hand mee. Houd het zacht en uit de buurt van tekst: het moet voelen als licht op een oppervlak, nooit als een halo rond woorden.

css
.panel {
  background-image:
    radial-gradient(circle 220px at var(--x, 50%) var(--y, 50%), rgb(244 114 182 / 0.35), transparent 70%),
    linear-gradient(135deg, #1e1b4b, #312e81);
}

/* JavaScript:
   panel.addEventListener("pointermove", (e) => {
     const r = panel.getBoundingClientRect();
     panel.style.setProperty("--x", `${e.clientX - r.left}px`);
     panel.style.setProperty("--y", `${e.clientY - r.top}px`);
   });
*/
De gloed is een bovenste laag over een donkere basis. Twee custom properties bijwerken is goedkoop, maar elke beweging tekent opnieuw, dus gebruik het op een paar panelen, niet op elke kaart van een pagina.

Een techniek kiezen

Schuiven met background-position

Ziet eruit als

Een veeg nieuwe kleur

Renderkosten

Tekent opnieuw tijdens de overgang

Het best voor

Knoppen, links, tags
@property-kleurstops

Ziet eruit als

Kleuren die ter plekke verschuiven

Renderkosten

Tekent opnieuw tijdens de overgang

Het best voor

Kaarten, badges, randen
Dekking-crossfade

Ziet eruit als

Het ene verloop dat in het andere oplost

Renderkosten

Samengesteld, geen hertekening

Het best voor

Grote panelen, lange rasters
Cursorgloed

Ziet eruit als

Licht dat de aanwijzer volgt

Renderkosten

Tekent bij elke beweging opnieuw

Het best voor

Een paar uitgelichte panelen
TechniekZiet eruit alsRenderkostenHet best voor
Schuiven met background-positionEen veeg nieuwe kleurTekent opnieuw tijdens de overgangKnoppen, links, tags
@property-kleurstopsKleuren die ter plekke verschuivenTekent opnieuw tijdens de overgangKaarten, badges, randen
Dekking-crossfadeHet ene verloop dat in het andere oplostSamengesteld, geen hertekeningGrote panelen, lange rasters
CursorgloedLicht dat de aanwijzer volgtTekent bij elke beweging opnieuwEen paar uitgelichte panelen
Twijfel je, gebruik dan de crossfade. Hij is het goedkoopst en werkt overal.

Voor verlopen die uit zichzelf bewegen in plaats van bij hover, zie geanimeerde CSS-verlopen. Voor het bredere beeld van wat tekentijd kost, zie CSS-verloopprestaties.

Touchschermen en verminderde beweging

Vermijd

  • Hoverstijlen die blijven hangen na een tik op telefoons
  • Informatie die alleen bij hover verschijnt
  • Lange, herhalende hoveranimaties
  • De instelling voor verminderde beweging negeren

Doe

  • Zet hoverregels in @media (hover: hover)
  • Toon dezelfde staat op :active voor touch
  • Houd overgangen tussen 200 en 500 ms
  • Haal beweging weg onder prefers-reduced-motion, houd de kleurverandering
css
@media (hover: hover) {
  .btn:hover { background-position: 100% 50%; }
}

@media (prefers-reduced-motion: reduce) {
  .btn { transition: none; }
}
De kleur verandert nog steeds voor iedereen; alleen de beweging verdwijnt voor mensen die om minder vroegen.

Hover-effecten brengen een website tot leven. Op socialposts is er geen aanwijzer, dus beweging moet in het ontwerp zelf zitten. De Marks van Gradiently kunnen hun eigen rustige beweging dragen, en met Pro exporteert een ontwerp als MP4, WebM of GIF waar de browser opnemen ondersteunt, klaar voor een story of een post.

Vind een kleurverloop dat alleen van jou is

Blader door duizenden Marks, ontwerp er gratis mee en claim de Mark die bij je past.

Bekijk de Markt

Vragen die mensen stellen

Kun je een CSS-verloop laten overgaan bij hover?

Niet rechtstreeks. background-image verandert direct. Laat background-position overgaan op een te groot verloop, animeer geregistreerde stops met @property, of laat de dekking van een tweede verloop infaden.

Hoe laat ik een verloopknop soepel van kleur veranderen bij hover?

Gebruik background-size: 200% 100% met een verloop van drie stops en laat dan background-position bij hover overgaan van 0% 50% naar 100% 50%.

Werkt @property in alle browsers?

Het werkt in huidige versies van Chrome, Edge, Safari en Firefox. Oudere browsers springen tussen staten in plaats van te glijden.

Wat is het meest performante verloop hover-effect?

Een dekking-crossfade: het hover-verloop staat op een pseudo-element en alleen de dekking verandert, wat hertekenen voorkomt.

Moeten verloop hover-effecten verminderde beweging respecteren?

Ja. Haal onder prefers-reduced-motion: reduce de beweging weg en houd een eenvoudige kleurverandering.

Deel deze gids

Geschreven door GradientlyGeverifieerd Gradiently-account

Het team achter Gradiently, een ontwerptool rond Marks: levende kleurverlopen die alles wat je ontwerpt op jou laten lijken.

Bekijk ons profiel

Op deze pagina

Waarom transition niet werkt op verlopenTechniek 1: een te groot verloop verschuivenTechniek 2: kleurstops animeren met @propertyTechniek 3: twee verlopen crossfadenTechniek 4: een gloed die de cursor volgtEen techniek kiezenTouchschermen en verminderde beweging

Deel deze gids

Volgende in CSS en web

CSS @property: verlopen en custom properties animeren

Lees verder

Alle gidsen over CSS en web
CSS en web

Geanimeerde CSS-kleurverloopachtergronden, goed gedaan

5 min lezen

Kleurverlopen zijn niet direct te animeren, maar alles eromheen wel. Vier technieken, wat elk de browser kost en hoe je beweging rustig en optioneel houdt.

CSS en web

CSS @property: verlopen en custom properties animeren

6 min lezen

Verlopen weigeren over te gaan omdat de browser de ene afbeelding niet in de andere kan mengen. Geef een custom property een type en die grens verdwijnt. Zo werkt @property, met code om te plakken.

CSS en web

Kleurverloopknoppen in CSS die premium aanvoelen

4 min lezen

De meeste kleurverloopknoppen zien er goedkoop uit om dezelfde paar redenen: te veel tinten, een hover die springt en tekst die vervaagt in het lichte eind. Dit recept vermijdt alle drie.

Vind de look die alleen van jou is.

Elke Mark is een levende achtergrond met één eigenaar. Probeer een beschikbare Mark en claim de jouwe als het goed voelt.

Begin met ontwerpen

Controleer een certificaat

Typ een certificaatnummer of de code van een Mark om te zien wie hem bezit.

Werkt met ChatGPT en Claude

Vraag je AI om een ontwerp. Hij maakt het in jouw Mark, klaar om te bewerken.

ChatGPTClaude
Zo verbind je

Product

  • Markt
  • Verkennen
  • Prijzen
  • Certificaten

Leren

  • Praktijkgids
  • Helpcentrum
  • Wat is er nieuw

Ontwikkelaars

  • Overzicht
  • ChatGPT en Claude
  • API-referentie
  • API-keys

Bedrijf

  • Over ons
  • Contact
  • Inloggen

Juridisch

  • Voorwaarden
  • Privacy
  • Terugbetalingen
  • Mark-bescherming
  • Cookies
  • Alle beleidsstukken
Beweeg over de letters. Elke letter draagt een echte Mark.Raak een letter aan om zijn Mark te zien.Eén naam. Tien Marks erin.
© 2026 Gradiently