我一直在跟随Keith Clark的CSS视差指南。他的概念如下:
HTML:
<div class="container”>
<div class="parallax-child”></div>
</div>
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);
}
这对大部分情况都有效,例如在我的开发网站上。然而我需要将这个效果添加到另一个网站上,但是我几乎无法控制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>
我可以添加任何我想要的样式,但不能编辑HTML结构,除非在注释中说明。
我的问题是,我似乎无法使视差效果起作用,如果我将视差效果的container
样式(在本文开头)放在body
上,则视差效果起作用...
根据我所读的内容,我需要将transform-style:preserve-3d;
样式添加到container
和子元素之间的元素上,但是这似乎不起作用。
有人知道出了什么问题吗?
编辑:
Codepen 展示在 body 上的工作 CSS。
Codepen 展示在 HTML 上的未能正常工作的 CSS。
编辑:由于固定位置和检测页面滚动的更多复杂性(似乎不可能),我真的需要通过使用 HTML 元素来使其正常工作。
奇怪的是,它有点起作用。点击此链接,左/右拖动滑块,即可看到视差效果,但向下滚动时却没有...
不太确定为什么向下滚动时这个效果不起作用...