Is there an opposite CSS pseudo-class to :hover?

RockPaperLz- Mask it or Casket picture RockPaperLz- Mask it or Casket · Jun 15, 2015 · Viewed 63.9k times · Source

Is there a pseudo-class in CSS to specify

:not(:hover)

Or is that the only way to specify an item that is not being hovered?

I went through several CSS3 references, and I see no mention of a CSS pseudo-class to specify the opposite of :hover.

Answer

Roko C. Buljan picture Roko C. Buljan · Jun 15, 2015

Yes, use :not(:hover)

.child:not(:hover){
  opacity: 0.3;
}

jsBin demo

Another example; I think you want to: "when one is hovered, dim all other elements".

If my assumption is correct, and assuming all your selectors are inside the same parent:

.parent:hover .child{
    opacity: 0.2;      // Dim all other elements
}
.child:hover{
   opacity: 1;         // Not the hovered one
}

.child{
  display:inline-block;
  background:#000;
  border:1px solid #fff;
  width: 50px;
  height: 50px;
  transition: 0.4s;
}

.parent:hover .child{
  opacity: 0.3;
}
.parent .child:hover{
  opacity: 1;
}
<div class="parent">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
</div>

Otherwise... simply use the default logic:

.child{
   opacity: 0.2;
}
.child:hover{
   opacity: 1;
}