【问题标题】:Parallax (relative) layer groups overlay eachother视差(相对)图层组相互重叠
【发布时间】:2015-04-16 13:35:08
【问题描述】:

我不明白为什么会这样: 我有: https://jsfiddle.net/d5jehq02/1

<div class="para_group"> 
   <div class="para_layer para_layer_back"> 
     <h2>background</h2>  
   </div> 
   <div class="para_layer para_layer_front"> 
     <h2>forefront</h2> 
   </div> 
</div>

我正在尝试创建视差滚动效果,虽然 2 个父层 (class='para_group') 的位置 ='relative',但子 div 仍然存在 - 特别是似乎与其父层重叠...

如果您看到上面的示例链接,您会意识到第二组的背景层 - 似乎与第一组重叠在一起 - 当它不应该重叠时 - 组的位置设置为相对 - 因此块对象(父 div) 应该出现在另一个下方... 我无法解决这个问题:(

【问题讨论】:

  • 我不确定我真的明白这里的问题是什么。
  • 我不明白为什么第 2 组 (para_group) (second para_group > para_layer_back) 的孩子与第 1 组 (para_group) 重叠 - 因为这两个组都有 position:relative
  • 您是否尝试过分别在第一组和第二组中添加 z-index:2 和 z-index:1?

标签: css


【解决方案1】:

由于 layer_back 元素和 layer_front 元素实际上被移动到 3d 上下文中并被缩放,因此这里传统 html 定位的相关性受到严重干扰。

要实现视差效果,这里要做的是:

设置 1px 透视(相机设置为距离渲染平面 1px)。

.parallax {
    perspective: 1px;
}

将背景层移动到视野深处 1 像素,同时将它们缩放到原来的两倍。

.para_layer_back {
    transform: translateZ(-1px) scale(2);
}

^ 这是视差效果的核心,​​当我们将透视设置为 1px 时,将元素移动 1px 深,将元素定位到距相机的距离是前面层(translateZ'd by 0)的两倍。这会产生滚动时的视差效果,但也会使元素看起来更小,因为它们更远(透视效果)。

这就是为什么它们是 scale(2) 的,所以它们以原始大小显示。

问题是,它们在不改变相对位置的情况下从相机中移开(然后它们彼此相邻),然后它们被原地缩放,比例在它们的中心设置变换原点的操作,使它们变大并相互重叠

解决问题的方法是先将它们彼此分开,然后再缩放它们。

看看分叉和更新的小提琴,我删除了后面层上的“scale(2)”部分,它们在后面,并且它们定位正确(没有重叠)。 http://jsfiddle.net/3x150vsx/1/

.para_layer_back {
    transform: translateZ(-1px) scale(1);
}

解决问题的方法在于在尝试扩大它们之前将它们彼此分开。

祝你好运:>

【讨论】:

  • 感谢您的详细解释。我了解视差滚动背后的“后勤” - 但是我的 cmets 如下: - 让我困惑的不是子 div(前 + 后)之间的关系。它是这样做的 2 个父 div(para-group)之间的关系。 - 让它们变大(比例:2)是 - 根据这个网站:keithclark.co.uk/articles/pure-css-parallax-websites - 不是让它们变大 - 而是将它们恢复到原来的大小。所以这并不能解释重叠。
  • 我也明白你的意思,但是提供的示例没有显示任何视差滚动...?
  • 您没有缩放父级 .para-group div。您正在缩放 .para_layer_back 背景 div(para-group 的子级)。并且后面的 div 是重叠的,而不是父 div 对它们进行分组。
  • 看起来第二个背景层(来自第二组)与第一个背景层(来自第一组)重叠,所以在某种意义上 - 是的 - 这些组相互重叠,因为他们的孩子也是如此.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2013-07-15
  • 2016-03-16
相关资源
最近更新 更多