固定背景附件—Google Chrome

Background Attachment Fixed—Google Chrome

目前在 Firefox 和 Safari 上 background-attachment: fixed 属性 正在运行,但在 Chrome 上没有响应。

这是适用于 FF 和 Safari 的页面 http://prestonmcpeak.com/work/enigma.html

这是我正在寻找的在所有三种浏览器中都能正常工作的预期效果: http://codyhouse.co/demo/alternate-fixed-scroll-background/index.html

我感觉这与页面某处的位置标签有关。

      <section class="project-header ">
        <div class="project-background show-for-large-up"></div>
        <section class="enigma"></section>
      </section>

        .project-header {
            section {
               position: fixed;
               height: 100%;
               width: 100%;
               top: 0;
               left: 0;
               z-index: -1;
               &.enigma {
                  background-size: contain;
                  background-attachment: fixed;
               }
            }
        .project-background {
            padding: 20% 0;
            margin: 0;
        }
        .enigma {
            background: url(../assets/img/enigma-1-m.jpg) no-repeat center top;
        }

好的,我想我知道问题出在哪里了。 CSS-Tricks 论坛上有人遇到了同样的问题。

问题是在您要应用固定背景的 div 的父元素之一上使用 -webkit-transform。

要解决此问题,您必须从 class 名称为 "main-section" 的部分中删除 -webkit-transform。

所以这个:

.main-section {
 -webkit-transform: translate3d(0,-45px,0);
  margin-bottom: -45px;
}

应该是这样的:

.main-section {
  margin-bottom: -45px;
}

我设法在您提供的 Enigma url 上复制并修复了问题。 如果这能解决您的问题,请告诉我。

通过 Javascript 有一个更简单的方法。由于这是使用 Webkit layout engine(Chrome、Safari、Yandex 等)的浏览器中的一个问题,您可以创建一个条件来更改 background-attachment 属性这些浏览器:

if($.browser.webkit)
  $(".project-header section.enigma").css('background-attachment', 'scroll');

这适用于 jQuery,但如果您更喜欢纯 Javascript,则条件为:

if(~navigator.userAgent.toLowerCase().indexOf("webkit"))

这解决了我的 (slick) 滑块的问题,它在所有幻灯片的父元素中使用 transform: translate3d(...)。由于我还希望它在每张幻灯片中使用 background-size: cover 属性 更改背景,因此这是最有效的解决方案。