如果你是通过我的Skrollr.js: Looping action that will always occur while user is scrolling window question, 那么你基本上知道发生了什么。
我正在使用的插件 Skrollr 无法处理无限循环动作。所以@Prinzhorn 提出的建议是使用“模运算符”。我试过了,你可以在这里看到。但是,这带来了另一个问题,您也可以在那里看到,因为我需要每滚动第 N 个像素时发生一个事件(动画)。但是卷轴永远不会超过每一个数字。它跳过了很多。所以,到目前为止,我无法弄清楚如何从那里获得一个恒定的间隔。
无论如何,这个问题以及让某些动作(或者更确切地说,许多动作)总是发生的事实可能不是一个好主意,ad infitium,即使它们正在影响的内容不在视口中。
所以我决定尝试data
为我的初始 Skrollr 动态设置值。这些数据值将尽我所能根据窗口高度和内容中的位置等通过 jQuery 计算出来。所以,很快,我设置了这个附加的小 JS 代码(jsFiddle 1)不同的图层在需要附加的地方进行动画处理,并data
设置了间隔,当它们在视口中时应该注意它们的动作。但是,我还没有弄清楚如何让他们根据下面显示的顺序设置 CSS 值!但是,当您阅读本文时,我正在努力!
<div class="red" data-0="display: block;">1</div>
<div class="yellow" data-0="display: none;" data-50="display: block;" data-400="display: none;">2</div>
<div class="blue" data-0="display: none;" data-100="display: block;" data-350="display: none;">3</div>
<div class="green" data-0="display: none;" data-150="display: block;" data-300="display: none;">4</div>
<div class="purple" data-0="display: none;" data-200="display: block;" data-250="display: none;">5</div>
请注意,我所说的序列基本上是一层应该显示在另一层之上,因此动画一、二、三、四、五……然后再返回四、三、二、一……再向上等等,等等,
正如我所说,我正在努力,但我已经到达
for (i in intervals) {
layer += ' data-' + (start + intervals[i]) + '=" "';
}
现在我必须弄清楚如何让这些属性中的一些以针对和其他data
的 CSS 更改为目标,然后如何让这些属性成为非对称的,因为它们需要响应上述来回序列。display: block;
display: none;
更新 1 号
好的,这就是我目前要做的:在此处查看更新的小提琴 (2)。
通过模块,我设法在某种程度上接近了我需要的东西。现在它几乎是连续的,但不完全是。有任何想法吗?