Canvas Chrome 滚动时出现负 z-index 问题

Canvas with negative z-index issue on scroll in Chrome

描述

canvas 负 z-index 存在问题。基本上,固定位置有2个元素,一个是块元素,另一个是canvas,canvas的z-index为负数,会滚动第二个一个不管它是什么 z-index.

此错误仅发生在 Chrome:Mac 和 PC。

代码示例

这是一个 HTML 示例(针对问题进行了缩减):

<ul>
    <li><span>test1</span></li>
    <li><span>test1</span></li>
    <li><span>test1</span></li>
</ul>

<div>
    <canvas />
</div>

和 CSS

html,body{
    height : 150%;
}

ul {
    position : fixed;
    z-index : -1;
    top : 0;
    left : 0;
    width : 100%;
    margin : 0;
    padding : 0;
    overflow : auto;

    li {
        float : left;
        width : 33%;
        height : 100px;
        background : red;
        position : relative;
        list-style: none;

        span{
            display:block;
            position : relative;
        }
    }
}
div {
    position : fixed;
    z-index : -2;
    top : 0;
    left : 0;

    canvas{
        opacity : 0.5
    }
}

我省略了 JavaScript 因为我确定这不是问题所在。

您可以在此 jsFiddle

中查看正在运行的错误

一些尝试有点解决了问题,但我不能使用...

经过多次尝试,这里解决了当前的问题,但在其他方面造成了麻烦:

这似乎是一个 Chromium/webkit(或眨眼)错误,这修复了它,满足您的所有标准并且不需要对 HTML 结构或其余样式进行更改:

ul {
    /* rest of the styles */
    -webkit-transform: translate3d(0,0,0);
}

演示 http://jsfiddle.net/3a66445w/2/