How to Prevent Parent Hover Effects When Hovering Over a Child Element in Nested DIVs?

Mary-Kate Olsen
Release: 2024-11-03 03:02:29
Original
209 people have browsed it

How to Prevent Parent Hover Effects When Hovering Over a Child Element in Nested DIVs?

Nested DIVs: Disabling Hover Effects on Parents When Child is Hovered

In this scenario, you have two nested DIV elements, labeled as ".parent" and ".child." When hovering over ".parent," you want its background color to change. However, upon hovering over ".child," you want ".parent" to revert to its default gray background.

CSS Code for Parent and Child Hover Effects:

<code class="css">.parent {
  width: 100px;
  height: 100px;
  padding: 50px;
  background: lightgray;
}

.parent:hover {
  background: lightblue;
}

.child {
  height: 100px;
  width: 100px;
  background: darkgray;
}

.child:hover {
  background: lightblue;
}</code>
Copy after login

Problem:

The CSS code above successfully applies the desired hover effects to both ".parent" and ".child." However, it does not address the requirement to disable the hover effect on ".parent" when ".child" is hovered.

Solution Using a Sibling Element:

As it turns out, CSS does not provide a direct way to achieve this effect with nested elements. However, you can employ a clever workaround using a sibling element.

  1. Add a new DIV sibling with class ".sibling" inside the ".parent" container.
  2. Position the ".sibling" element to cover the ".child" element using 'top' and 'left' CSS properties.
  3. Set a higher 'z-index' value for ".sibling" to ensure it appears above ".child."
  4. Add the same background color transition effect to ".sibling" that you applied to ".parent."

Updated CSS with Sibling Element:

<code class="css">.parent {
  ... (unchanged)
}

.child {
  ... (unchanged)
}

.sibling {
  position: relative;
  width: 100px;
  height: 100px;
  padding: 50px;
  top: -50px;
  left: -50px;
  background: #3D6AA2;
  transition: background-color 1s;    
}

.sibling:hover {
  background: #FFF;
}</code>
Copy after login

How it Works:

When the mouse cursor hovers over ".child," the background color of ".child" changes. Simultaneously, the background color of ".sibling" also changes due to the hover effect applied to it. Since ".sibling" covers ".child," the change in its background color effectively overrides the hover effect applied to ".parent." This gives the illusion that the hover effect on ".parent" has been disabled.

The above is the detailed content of How to Prevent Parent Hover Effects When Hovering Over a Child Element in Nested DIVs?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template