如何使用jQuery在垂直滚动站点中获取当前可见幻灯片
这个问题听起来可能很傻,但它让我头疼。我想做一种垂直滚动演示,由不同的幻灯片组成;效果应与本网站“相似”: 我创建了一个无序列表,其中包含不同的幻灯片:如何使用jQuery在垂直滚动站点中获取当前可见幻灯片,jquery,css,position,offset,vertical-scrolling,Jquery,Css,Position,Offset,Vertical Scrolling,这个问题听起来可能很傻,但它让我头疼。我想做一种垂直滚动演示,由不同的幻灯片组成;效果应与本网站“相似”: 我创建了一个无序列表,其中包含不同的幻灯片: <div id="main"> <div id="content"> <ul id="bg"> <li id="slide1"> <!-- content --></li> <li id="slide2"> <!-- c
<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>
等等
当然,这只在某种意义上起作用:当滚动幻灯片时,会显示下面的幻灯片,但是前面的图像总是可见的,因为它们的固定位置,所以从流中删除了所有图像
所以我想给图片一个位置:绝对的(给位置:相对的,
),但这不会让它们在新幻灯片到达并覆盖它之前在页面中央“粘粘”,它们当然会跟随它们的父级
我完全不知道这一点,也不知道如何在窗口中获取当前的可视列表。我查看了jQuery提供的所有内置函数:scrollTop()
,offset().top
,position().top
,我得到了$(窗口)。height()
,$(“#容器”)。height()
,
的高度是固定的,等等,但我得到的都是元素的“绝对”位置(我的意思是,它不会随着滚动而改变),我不知道如何说出幻灯片在屏幕中间的位置,以便我可以做些什么(尽管我仍然不知道是什么)
我确信我在这里遗漏了一些明显的东西。我已经研究了链接站点的代码,虽然我几乎可以理解其中的所有内容,但我仍然不知道它是如何得到当前幻灯片的(此外,它的工作原理与我的不同,因为它以动态方式加载动画GIF,并且只对每张幻灯片进行加载。在我的幻灯片中,每张幻灯片都是一个包含不同元素、动画等的容器)
例如,如果$('li#slide3')
是内部视图,如何获取?如何解决堆叠图像问题?是否需要将其设置为“已修复”动态地,或者在每次滚动时重新计算它们的位置,这样一个位置:绝对的就可以了?对于这一秒,我仍然需要得到每个元素相对于一个固定点的位置(我相信$(window).scrollTop()
,到目前为止,滚动时它总是给我0),但我不知道怎么做
哦,我正在使用jQueryscroll()
方法绑定滚动,因为我还有一个导航列表,可以让您跳转到所需的幻灯片,它也解释了这一点
我希望我清楚地说明了这一点:图像必须始终保持在中心位置,滚动幻灯片时需要将其覆盖,当图像被覆盖时,需要显示并替换以下内容,因此我需要了解如何获取当前
元素的位置,例如当它在窗口中间时,以及相应地设置上一幅图像。该类型的网站正在使用视差效果来移动背景图像
考虑使用一个jQuery视差插件,比如它可以让你的工作变得更容易
但是,对于整个网页,您可能希望根据您提供的示例打开一个演示页面。该演示页面也是一个教程
还有一个可以给你更多的想法,通过查看网页内的,你可以找到他们使用的视差插件的类型
编辑:Firefox浏览器中内置了一个非常好的工具,您可以查看分层3D结构中的任何网页。这将有助于了解该网站如何与分层背景交互。有关Firefox 3D视图的更多信息
编辑2:这可能很有用:
此外,对于您提供的网站示例,在文件中可以看到他们在滚动到视图中后将图像居中的方法。当然,他们让jQuery修改这些元素,但样式确实有意义:
#main ul.bg li img.gif { position: absolute; z-index: 1; width: 996px; height: 800px; left: 50%; right: 50%; top: 50%; bottom: 50%; margin: -400px -498px; }
编辑3:这里有一个jQuery视差插件,它的功能与链接的示例相同,并且有一个非常强大的API。这个特定的插件具有自定义偏移的每层定位
这是一种使用插件的方法,在该插件中,内容排列在屏幕中央。
另一个显示这个插件在选择任何层进行交互时没有问题
该插件名为Stellar.js,gitHub页面名为。如果您访问该插件,它会水平滚动……请注意stars中的EASY一词,它是一种视差效果,与浏览器的视口边缘对齐。当您滚动时,其他stars将在常规区域自动滚动以显示显示其他关键字。我看HTML的发展,div#容器有一个很大的高度(li的数量*li的高度),我有display:none/block,overflow:hidden,高度在0和窗口高度之间。我建议将offset
标记改为parallax
标记。我知道parallax插件,并在一些项目中使用过它,但该网站没有使用它——尽管它所达到的效果可以被视为一种视差样式。对此我非常确定see it每次计算图片的距离;我只是不知道它是如何获得当前幻灯片的。无论如何,你链接到的网站很好(我以前没有看到nikeworld),可能值得一试,虽然这不是我所需要的。我看到了,我也知道你链接的列表中的站点…a+1值得,它没有回答我的问题,但它可能是一个很好的选择。据我所见,你提供的示例链接只是一个正在使用的自定义视差引擎…许多三角数学函数在计算中都很明显使用视差插件的好处
#main ul.bg li img.gif { position: absolute; z-index: 1; width: 996px; height: 800px; left: 50%; right: 50%; top: 50%; bottom: 50%; margin: -400px -498px; }