固定位置在Safari 7中不起作用

ste*_*eel 6 css safari safari7

当我滚动而不是移动时,我有一个位于屏幕底部的固定位置div.但是,在Safari上,这个div的行为就像绝对定位一样,并且与其他内容一起上下移动.当我单击"检查元素"时,编程的(所需)位置会突出显示,而不是视觉(实际?)位置.

我无法在小提琴中重现这个问题.这不会发生在Chrome,FF或IE(10+)中.

这是视觉(字符计数框)和编程位置(突出显示区域)之间差异的屏幕截图.

幻影div的屏幕截图

在这些上面还有更多css和html的实际层,但这是直接的代码:

HTML简化了

<article class="parent">
  <article class="inner-wrapper">
    <div id="counter">
      Character Count: <span class="tally">*javascript calculation*</span>
    </div>
  </article>
</article>
Run Code Online (Sandbox Code Playgroud)

SCSS

article.parent {
  max-width: rem(640);
  margin: 0 auto rem(30) auto;
  padding: 0 rem(10);

 #counter {
   position: fixed;
   border: #888 solid 1px;
   bottom: 130px;
   left: 10px;
   border-radius: 5px;
   padding: 10px;
   background: rgba(255, 255, 255, .8);
   font-size: .8em;
   min-width: 150px;
 }
Run Code Online (Sandbox Code Playgroud)

}

如何使这个div在Safari中运行,以便视觉位于编程位置的顶部?

ste*_*eel 5

找到BUG:

通过在父元素中包含这两个规则,我能够将错误跟踪到我们正在使用的硬件加速"技巧":

transform: translateZ(0)
perspective: 1000
Run Code Online (Sandbox Code Playgroud)

通过删除这两个规则,元素现在可以按预期运行.这里有关于这个问题的更多信息:CSS性能相对于translateZ(0)

Bonus Bug修复:在HTML正文中删除这些规则会导致我们的PhantomJS/Poltergeist测试中出现各种元素重叠问题.显然PhantomJS不会自行正确地移动元素.我们仅将这些规则包含在测试中,目前一切正常.

原始解决方案:

我能够通过从父容器中拉出计数器来解决这个问题:

<article class="parent">
  <article class="inner-wrapper">
    ...
  </article>
  <div id="counter">
    Character Count: <span class="tally">*javascript calculation*</span>
  </div>
</article>
Run Code Online (Sandbox Code Playgroud)