Google chrome -webkit变换和位置:固定+;位置:相对渲染问题

Google chrome -webkit变换和位置:固定+;位置:相对渲染问题,google-chrome,safari,webkit,css-transforms,Google Chrome,Safari,Webkit,Css Transforms,当position:relative元素中包含position:fixed元素,并且页面上的任何元素都具有-webkit转换时,Chrome和Safari似乎存在问题。有一个渲染问题,这有点难以解释,但您可以在此处看到: 代码: 变色 一,。单击“更改颜色”。颜色变了 二,。向下滚动,使红色框刚好位于灰色区域的一半 三,。再次单击“更改颜色”。颜色不变 四,。向下滚动更多。滚动时颜色会发生变化 H #粘性容器{ 高度:50px; 位置:相对位置; z指数:100; } #粘的{ 背景:红色;

当position:relative元素中包含position:fixed元素,并且页面上的任何元素都具有-webkit转换时,Chrome和Safari似乎存在问题。有一个渲染问题,这有点难以解释,但您可以在此处看到:

代码:


变色
  • 一,。单击“更改颜色”。颜色变了
  • 二,。向下滚动,使红色框刚好位于灰色区域的一半
  • 三,。再次单击“更改颜色”。颜色不变
  • 四,。向下滚动更多。滚动时颜色会发生变化
  • H #粘性容器{ 高度:50px; 位置:相对位置; z指数:100; } #粘的{ 背景:红色; 高度:50px; 宽度:100px; } 钮扣{ 边缘顶部:100px; } #粘的,蓝色的{ 背景:蓝色; } #长的{ 高度:1000px; 背景:银; 位置:相对位置; z指数:0; } .图标旋转{ 显示:内联块; -moz动画:自旋2s无限线性; -o-动画:自旋2s无限线性; -webkit动画:旋转2s无限线性; 动画:旋转2s无限线性; 宽度:10px; 高度:10px; 背景:黄色; 位置:绝对位置; } @-moz关键帧旋转{ 0% { -moz变换:旋转(0度); } 100% { -莫兹变换:旋转(359度); } } @-webkit关键帧旋转{ 0% { -webkit变换:旋转(0度); } 100% { -webkit变换:旋转(359度); } } @-o-关键帧旋转{ 0% { -o变换:旋转(0度); } 100% { -o变换:旋转(359度); } } @-ms关键帧旋转{ 0% { -ms变换:旋转(0度); } 100% { -ms变换:旋转(359度); } } @关键帧旋转{ 0% { 变换:旋转(0度); } 100% { 变换:旋转(359度); } } $(文档).ready(函数(){ $('粘性')。粘贴(100); $('button')。在('click',function()上{ $('#sticky')。toggleClass('blue'); }); })
    这在Firefox中运行良好。没有在IE中测试过


    其他人是否也有同样的问题,是已知的bug还是我做错了什么?

    这个bug也适用于chrome浏览器的beta版。在这里,你可以检查报告的错误在铬如果你的错误还没有报告,你可以张贴在那里,并希望得到答复。
    <div id="sticky-container">
        <div id="sticky">
            <div class="test"></div>
        </div>
    </div>
    <div id="long">
        <button class="pull-right">Change color</button>
        <ol>
            <li>1. Click change color. The color changes.</li>
            <li>2. Scroll down so that the red box is just half-way over the gray area.</li>
            <li>3. Click change color again. The color does not change.</li>
            <li>4. Scroll down even more. The color changes while you scroll.</li>
        </ol>
    </div>
    <i class="icon-spin">H</i>
    <style type="text/css">
        #sticky-container {
            height: 50px;
            position: relative;
            z-index: 100;
        }
    
        #sticky {
            background: red;
            height: 50px;
            width: 100px;
        }
        button {
            margin-top: 100px;
        }
    
        #sticky.blue {
            background: blue;
        }
    
        #long {
            height: 1000px;
            background: silver;
            position: relative;
            z-index: 0;
        }
    
        .icon-spin {
          display: inline-block;
          -moz-animation: spin 2s infinite linear;
          -o-animation: spin 2s infinite linear;
          -webkit-animation: spin 2s infinite linear;
          animation: spin 2s infinite linear;
          width: 10px;
            height: 10px;
            background: yellow;
            position: absolute;
        }
        @-moz-keyframes spin {
          0% {
            -moz-transform: rotate(0deg);
          }
          100% {
            -moz-transform: rotate(359deg);
          }
        }
        @-webkit-keyframes spin {
          0% {
            -webkit-transform: rotate(0deg);
          }
          100% {
            -webkit-transform: rotate(359deg);
          }
        }
        @-o-keyframes spin {
          0% {
            -o-transform: rotate(0deg);
          }
          100% {
            -o-transform: rotate(359deg);
          }
        }
        @-ms-keyframes spin {
          0% {
            -ms-transform: rotate(0deg);
          }
          100% {
            -ms-transform: rotate(359deg);
          }
        }
        @keyframes spin {
          0% {
            transform: rotate(0deg);
          }
          100% {
            transform: rotate(359deg);
          }
        }
    </style>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js" />
    <script type="text/javascript">
        $(document).ready(function() {
            $('#sticky').affix(100);
    
            $('button').on('click', function() {
                $('#sticky').toggleClass('blue');
            });
        })
    </script>