Anticode Open builder

The card hover lift check: why rising cards look generated

The card hover lift check fails a page whose stylesheet moves an element upwards when the pointer is over it, the familiar effect of a card floating a few pixels up with a deeper shadow. It's among the most common habits in generated layouts. The Critic reports it in the Report tab without blocking publishing, and Anticode's own design systems use other hover states that say more.

Updated · By the Anticode team

Why the lift became a tell

Utility CSS frameworks make a hover lift one short class, and component examples apply it to every card, so models trained on them do the same. The result is a grid of feature cards, testimonials and pricing plans that all bob upwards as the pointer crosses them. Movement draws the eye, so movement on everything draws it nowhere. It also misleads: a card that rises looks pressable, and many of these cards aren't links at all. And on a phone, where there's no hover, the effect does nothing except occasionally stick after a tap. The hover effects guide covers good hover design more broadly.

What the card hover lift check matches

The Critic reads the page's stylesheet for a :hover rule that contains translateY(-, that is, a transform that moves the element up. A few consequences follow from matching the code rather than the screen:

  • It isn't only cards. A button or a link that rises on hover fails just the same; the label says cards because that's where the habit is commonest.
  • One is enough. Despite its wording about cards all lifting, a single upward hover rule anywhere on the page fails it.
  • Other ways of moving up pass. translate(0, -4px), translate3d() or the separate translate property aren't matched, and neither is a rule written for a child of the hovered element.
  • Downward movement passes. Moving an element down or sideways on hover isn't what the check looks for.

So treat a pass as "no standard lift found", not as proof the page has no floating cards.

Hover states that say something

A good hover answers one question: what will happen if I click? Anticode's design systems each use effects tied to what the element does:

Hover effects on design-engine pages
ElementWhat happens on hover
ButtonsA slight brightening of the action colour, quickly, on a tuned curve
Luxury's outlined buttonsThey fill with the action colour
Brutalist's buttonsThey press into the page: two pixels down and right, with a smaller shadow
Product cards in a shopThe photo zooms very slightly inside its frame; the card itself stays put
Navigation linksThe text darkens from the muted colour to full text colour
Links in a page indexA small arrow slides a few pixels to the right and takes the action colour

Feature cards, testimonials and pricing plans don't move at all, because they're not links. The only element whose frame changes is one you can press, and the change describes the action: forward, into, brighter.

Fixing a failure

  1. Find the hover rule with the upward translate, and ask whether the element is clickable.
  2. If it isn't, remove the hover effect altogether.
  3. If it is, replace the lift with a change that suits it: a colour or underline change for links, a fill or press for buttons, a gentle zoom of the image inside a fixed frame for product cards.
  4. Keep any hover change quick, around 150 milliseconds, and on a tuned curve; the default ease check covers why.
  5. Make sure the same state appears on keyboard focus, so people who don't use a mouse get the same feedback.

Avoid replacing the lift with a fade. A hover that only changes opacity is flagged by its own check, the opacity hover check, because it makes the element look disabled.

Limits

  • Reported, not enforced. The design gate doesn't include this check.
  • No judgement of context. A deliberate lift on a single draggable tile fails the same as twelve bobbing cards.
  • Design-engine pages already pass. The code editor doesn't keep CSS changes beyond colour tokens, so a failure is unlikely on these pages; the check matters most as a rule for your own code and exported projects.

Questions people ask

Should cards move up on hover?

Rarely. Only clickable things need a hover state, and for a card the image zooming inside its frame, or a clear link style, is calmer and more honest.

Does a button that rises on hover fail?

Yes. The check matches any hover rule with an upward translateY, not just cards.

Will it stop me publishing?

No. It's shown in the Report tab only.