Home  >  Article  >  Web Front-end  >  How to Maintain Stacking Order Despite WebKit Filter Hover in CSS?

How to Maintain Stacking Order Despite WebKit Filter Hover in CSS?

DDD
DDDOriginal
2024-10-24 11:37:02725browse

How to Maintain Stacking Order Despite WebKit Filter Hover in CSS?

Stacking Order Changes in Webkit Filter Hover: Understanding Stacking Contexts

A curious issue arises regarding stacking order when applying a WebKit filter: upon hovering over an image, the order unexpectedly shifts. To resolve this challenge without disrupting other site elements, dive into the intricacies of stacking contexts.

Stacking contexts dictate the order in which elements are displayed on the page. An element creates a new stacking context when its style properties include certain values, such as transform, overflow, or a filter.

In the provided example, when a WebKit filter (grayscale) is applied to the image, a stacking context is automatically established. This newly created context results in the absolutely positioned div (".slide-content") being positioned below the image, causing it to be hidden.

To prevent this undesired behavior and maintain the original stacking order, here's a revised solution:

Replace this CSS:

<code class="css">li a:hover img {
  -webkit-filter: grayscale(100%);
}</code>

With this alternative, which avoids creating a stacking context:

<code class="css">li a:hover img::before {
  content: "";
  background-color: rgba(0, 0, 0, 0.5);
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  filter: grayscale(100%);
  z-index: -1;
}</code>

By utilizing a pseudo-element (::before) with an absolute position and placing it below the image, we effectively simulate the effect of a filter without creating a new stacking context. This clever workaround allows you to achieve the desired visual effect while preserving the intended stacking order.

The above is the detailed content of How to Maintain Stacking Order Despite WebKit Filter Hover 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