CSS hover on a div, but not if hover on his children

Nillus picture Nillus · Mar 8, 2014 · Viewed 25.4k times · Source

I looked if this question had already been answered, but couldn't find anything, only questions on the reverse css rule I am looking for.

I have a div that contains one or more child, and I want it to change its background on hover, but not if hovering one of its children; I need the :hover rule to be restricted to pure element, not its offsprings it contains. Being not a parent rule in CSS, and being :hover triggered whenever the mouse passes over the parent AND its children, I find myself out of ideas, and maybe this result is impossible to achieve with only CSS. However, the question is about CSS, so no JS or JQuery solution is needed (I can provide that by myself)

Code:

HTML

    <div class="parent">Text of the parent
        <p class="class1">I do not need to trigger parent's background color change!</p>
    </div>

CSS

    .parent {
       background: #ffffff;
    }
    .parent:hover {
       background: #aaaaff;
    }
    .class1 {
       margin: 10px;
    }

Answer

sam thomas picture sam thomas · Nov 12, 2016

You can simply achieve this by adding this property to the child class CSS.

pointer-events: none;

This worked for me.