为什么webkit过滤器上的堆叠顺序更改悬停?

时间:2014-09-10 11:37:53

标签: css filter webkit z-index

在应用webkit过滤器时,我注意到堆叠顺序存在一个奇怪的问题。为什么当我将鼠标悬停在图像上时,堆叠顺序会发生变化?

我宁愿不必使用z-indexing来修复此问题,因为它会破坏其他网站元素。

这是我的JSFiddle http://jsfiddle.net/r13ycy1p/

请原谅荷马,我只需要一张图片。

编辑:如何反转效果以阻止绝对位置div被隐藏?

这是我的HTML

<ul>
<li>
    <a href="#">
        <div class="slide-content">
            <div class="slide-title">
                <h1>hello world</h1>
            </div>
            <div class="slide-desc">
                <p>a description about something</p>
            </div>
        </div>
        <img src="http://img4.wikia.nocookie.net/__cb20130920142351/simpsons/images/e/e9/Pic_1187696292_8.jpg"/>

    </a>
</li>
</ul>

CSS

li {
list-style:none;    
}

.slide-content {
position:absolute;
color:red;
top:50px;
}

li a:hover img{
-webkit-filter: grayscale(100%); /* For Webkit browsers */
}

1 个答案:

答案 0 :(得分:6)

这是因为none以外的值会建立stacking context。这已记录在 spec (目前处于工作草稿状态)中:

  

<强> 2 Module interactions

     

此规范定义了一组影响的属性   应用这些属性的元素的可视化渲染;   在元素大小调整后应用这些效果   根据[CSS21]的视觉格式化模型定位。一些   这些属性的值会导致创建包含   阻止和/或创建堆叠上下文

该规范还指出:

  

<强> 5 Graphic filters: the filter property

     

none 以外的计算值会导致创建a   堆叠上下文 [CSS21]与CSS不透明度相同。