I’m hardly a design dogmatist, but it’s time for an exception. All around the web, hover states are being abused, and only you can put a stop to this.
Whatever a mouse user is doing, he is perpetually hovering. He might be hovering over a specific control, or over several places in the course of another action: dragging a scrollbar, selecting a word, even just idling around the screen. But until he has clicked, this user has taken no positive action. A click is unambiguous: the caveman pointing at the mammoth, the dog scratching at the door to go out. It cannot be done in the course of anything else.
Hover states can provide subtle visual cues that help the user understand how something works. A faint glow around a “favourite” star. An underline appearing underneath a link. But they should not be used for anything else. Hovering does not demonstrate user intent.
Designers who pop up information panels or move page elements on hover are using flawed logic, second-guessing what users want to do before they do it. The result, which I’ve seen in countless usability tests, is that users activate these controls accidentally. You know what happens? People actually flinch: “What was that?” They return with hesitation, less confident in their understanding of the site. It’s no accident that the Twitter worm propagated through hover—accidental activation meant users spread the worm unintentionally.
You may argue that hover states save space, and you can use hover panels to display supplementary information that helps the user know whether to click. It’s a feeble excuse. If the information is important, it should be on the screen already; if not, it should be omitted. The hover compromise shows only that you were too timid to make this decision.
Another compelling reason not to hide information behind hover is that you can’t rely on it being there. The approach prioritises one mode of input—the mouse—and makes information unavailable to people using keyboards, touchscreens and screenreaders. That’s not what your mother taught you.
Please, do your part. End hover abuse now.
Addendum: If you positively have to use hover popups, at least add a delay so they only activate if the user hovers for >500ms. It’s still no guarantee of intent, but it makes it a more likely probability.