Home  >  Article  >  Web Front-end  >  How to Disable Hover Effect on Parent When Hovering Over Child in CSS?

How to Disable Hover Effect on Parent When Hovering Over Child in CSS?

DDD
DDDOriginal
2024-11-03 20:12:29336browse

How to Disable Hover Effect on Parent When Hovering Over Child in CSS?

Hover Effect on Child Disables Hover Effect on Parent

The Problem:

You have two nested

elements, and you want to change the background of the parent element .parent when you hover over it. However, when you hover over the child element .child, you want the background of the parent to revert to its original state.

The Solution:

Using pure CSS, it was previously impossible to achieve this effect directly. However, with the recent introduction of the :has selector in 2024, it is now possible to address this issue:

<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;
}

/* The solution using the :has selector */
.parent:has(.child:hover) {
  background: lightgray;
}</code>

By targeting the parent element that has a hovered child element, we can effectively disable the hover effect on the parent when the child is hovered.

Previous Limited Solution (Pre-2024):

Prior to the introduction of the :has selector, a workaround was to use a sibling element to achieve a similar effect:

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

.child {
  height: 100px;
  width: 100px;
  background: #355E95;
  transition: background-color 1s;
  position: relative;
  top: -200px;
}

.child:hover {
  background: #000;
}

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

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

This approach involved creating a sibling element that is positioned on top of the child element. When the child is hovered, the sibling's background color changes, effectively hiding the parent's background.

The above is the detailed content of How to Disable Hover Effect on Parent When Hovering Over Child in CSS?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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