这个问题可能听起来很愚蠢,但它却让我伤透了脑筋。我想做一种垂直滚动演示,由不同的幻灯片组成;效果应该与该网站“类似”:http://www.soleilnoir.net/ believein/#/start http://www.soleilnoir.net/believein/#/start
我创建了一个包含不同幻灯片的无序列表:
<div id="main">
<div id="content">
<ul id="bg">
<li id="slide1"> <!-- content --></li>
<li id="slide2"> <!-- content --></li>
<!-- and so on -->
</ul>
</div>
</div>
我已经给了一个position:fixed
位于页面中心的所有幻灯片内容(到目前为止是图像),以及不同的 z 索引以使幻灯片和图像堆叠。就像是
----- slide 1
§§§ image 2
----- slide 2
§§§ image 3
---- slide 3
等等
当然,这仅在某种意义上有效:幻灯片在滚动时会显示下一张幻灯片,但之前的图像始终可见,由于其固定位置而全部从流程中删除。
所以我想给这些图像一个position:absolute
(并给position:relative
to the <li>
)但这并不会使它们“粘”在页面的中心,直到新幻灯片到达并覆盖它,它们当然会自然地跟随其父级<li>
在他们的运动中。
我对此完全不知所措,也不知道如何获取窗口中当前的可见列表。我查看了 jQuery 提供的所有内置函数:scrollTop()
, offset().top
, position().top
, I got $(window).height()
, the $('#container').height()
, <li>
的高度是固定的,等等,但我得到的只是元素的“绝对”位置(我的意思是,它不会随着滚动而改变),我不知道如何说幻灯片何时穿过屏幕的一半,以便我可以做某事(但仍然不知道做什么)。
我确信我在这里遗漏了一些明显的东西。我已经研究了链接站点中的代码,虽然我几乎可以理解它的所有内容,但我仍然无法弄清楚它如何获取当前幻灯片(此外,它的工作方式与我的不同,因为它动态加载动画 gif 并且只对每张幻灯片执行此操作。在我的幻灯片中,每张幻灯片都是一个包含不同元素、动画等的容器)。
例如,如果$('li#slide3')
是里面的景色吗?如何解决堆叠图像问题?我是否需要动态地将它们设置为“固定”,或者在每次滚动时重新计算它们的位置,以便position:absolute
会做?对于这一秒,我仍然需要获取每个元素与固定点相比的位置(我相信$(window).scrollTop()
,到目前为止,滚动时总是给我 0),但我不知道如何。
哦,我正在使用 jQueryscroll()
绑定滚动的方法,因为我还有一个导航列表,可以让您跳转到所需的幻灯片,它也解释了这一点。
我希望我清楚地表明了这一点:图像必须始终位于中心,滚动幻灯片时需要覆盖它们,而当图像被覆盖时,以下需要出现并取代它的位置,所以我需要了解如何获取当前的位置<li>
元素,比如当它位于窗口的一半时,并相应地设置前一个图像。