为全局视差添加透视HTML - 纯CSS

Mar*_*all 10 html css parallax

我一直在关注Keith Clark的 CSS Parallax指南.他的概念是这样的:

HTML:

<div class="container”>
  <div class="parallax-child”></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.container {
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  overflow-y: scroll;
  perspective: 1px;
  perspective-origin: 0 0;
}

.parallax-child {
  transform-origin: 0 0;
  transform: translateZ(-2px) scale(3);
}
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都是完美的,例如在我的开发网站上.但是我需要将这个效果添加到另一个我根本无法控制HTML结构的网站,下面是基本结构树,添加注释到我可以编辑的地方.

<html>
  <body>
    <div itemscope itemtype="http://schema.org/AutoDealer">
      <div id="main-wrap">
        <div class="row">
          <div class="main twelvecol">

            <!-- Editable -->
            <div>
              <div class="row-block finance parallax__group">
                <div class="parallax__layer--back parallax__layer">
                  <p>Content in here scrolls slower than everything else</p>
                </div>
                <div class="wrapper">
                  <div class="container">
                    <div class="parallax__layer--base parallax__layer">
                      <p>This is all of the top level content</p>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <!-- END Editable -->

          </div>
        </div>
      </div>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我可以添加我想要的任何样式,除了注释中所述之外,不能编辑HTML结构.

我的问题是我似乎无法使视差效果起作用,如果我将container视差效果的示例样式(在这篇文章的顶部)放在body视差效果上...

根据我的阅读,我需要将transform-style: preserve-3d;样式添加到container孩子和孩子之间的元素上,但这似乎不起作用.

谁知道出了什么问题?

编辑:

Codepen身体上工作的CSS .

Codepen在非工作CSS的HTML.

编辑: 由于固定位置的更复杂和检测身体滚动(似乎不太可能),我真的需要通过使用HTML元素来实现这一点.

奇怪的是,这是有点作品.按照此链接并单击并向左/向右拖动滑块,视差效果就在那里,只是当你向下滚动时...

当你向下滚动时,不太清楚为什么这个效果不起作用......

Mar*_*all 2

猜猜没有人知道这个问题的答案,所以我想我不妨发布我所做的事情。

看来您根本无法使用 HTML 标签来实现此视差效果,因此我只是将效果放在包含的 div 上,因此对于诸如粘性标题之类的功能,我可以简单地检查此 div 上的滚动量,然后将任何东西粘到position: sticky.

Sticky 在 Edge 或 IE 上不起作用,因此回退只是完全禁用这些浏览器上的视差效果,并将滚动返回到 HTML 元素,以便您可以使用position: fixed.

倒退:

@supports ((perspective: 1px) and (not (-webkit-overflow-scrolling: touch)) and ((position: sticky))) {
Run Code Online (Sandbox Code Playgroud)