如何使用 jQuery 获取垂直滚动站点中当前可见的幻灯片

2024-01-09

这个问题可能听起来很愚蠢,但它却让我伤透了脑筋。我想做一种垂直滚动演示,由不同的幻灯片组成;效果应该与该网站“类似”: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>元素,比如当它位于窗口的一半时,并相应地设置前一个图像。


该类型的网站正在使用视差效果移动背景图像。

考虑使用jQuery 视差插件, 例如j视差 http://stephband.info/jparallax/index.html这可以让事情变得更容易。

但对于一个整个网页,你可能想转向jQuery 视差插件 http://www.ianlunn.co.uk/plugins/jquery-parallax/有一个基于您提供的示例的演示页面。该演示页面也是一个教程!

还有很多网站 http://smashinghub.com/30-awesome-parallax-scrolling-effect-in-web-design.htm这可以给你更多的想法,并通过寻找inside网页上,您可以找到他们正在使用什么类型的视差插件。

Edit:Firefox 浏览器中内置了一个出色的使用工具,因此您可以在浏览器中查看任何网页。分层3D结构。这将有助于了解该网站如何与分层背景交互。更多关于火狐 3D 视图 HERE https://developer.mozilla.org/en/Tools/Page_Inspector/3D_view.

Edit 2:这可能有用:如何判断 DOM 元素在当前视口中是否可见? https://stackoverflow.com/q/123999/1195891

另外,对于您提供的网站示例,他们使用的方法使图像居中一旦滚动到视图中,就可以在视口中看到样式.css http://www.soleilnoir.net/believein/css/style.css文件。当然,他们有 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; }


Edit 3:这里有一个jQuery 视差插件它与您链接的示例执行相同的操作,并且具有非常强大的 API。这个特定的插件具有带有自定义偏移量的每层定位。

这是一个website http://www.ws-interactive.fr/methode/使用该插件,其中的内容在屏幕中央对齐。
这个其他website http://magiccitysweeps.starz.com/显示该插件在选择任何层进行交互时没有问题。

该插件名为恒星.jsgitHub 页面是HERE https://github.com/markdalgleish/stellar.js。如果你访问那里主页 http://markdalgleish.com/projects/stellar.js/,它水平滚动......注意这个词EASY in stars这是一种与浏览器视口边缘对齐的视差效果。当您滚动时,其他stars进入时会自动滚动一般区显示其他关键字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 jQuery 获取垂直滚动站点中当前可见的幻灯片 的相关文章

随机推荐

  • 使用实体管理器本机查询插入我的 JPA

    我正在尝试在我的数据库中插入数据 我在我的项目中使用 JPA 这就是我的豆子的样子 PersistenceContext EntityManager em em createNativeQuery INSERT INTO testtable
  • 如何在 quantmod 包中创建技术指标

    我是 R 的新手 在创建技术指标时遇到一些问题 更具体地说 我想创建一个指标 Fibonacci 这将被添加到chartSeries由 5 条水平线组成 我正在使用的数据是股票的收盘价 因此 我想要创建的图表将在最高收盘价点有一条水平线 在
  • 在 Delphi 控制台应用程序中使用 VCL TTimer

    正如题主所说 我在 Delphi 中有一个控制台应用程序 其中包含TTimer多变的 我想做的是将事件处理程序分配给TTimer OnTimer事件 我对 Delphi 完全陌生 我曾经使用 C 向事件添加事件处理程序是完全不同的 我发现
  • Google Guice 是否处于活动状态?

    一年多没有发布任何版本 甚至没有修复小错误 对存储库的提交很少 并且过去两个月没有提交 使用这个库开始新项目安全吗 Guice 4 现在处于测试阶段 请参阅https github com google guice https github
  • 使用 make 文件编译单独目录中的文件

    好吧 我一直无法掌握 make 和 makefile 我尝试通读手册页 但没有成功 所以我就来这里了 L 我有一堆文件开始在一个文件中变得非常不受管理 我正在尝试制作一个操作系统 并且我想尝试将这些文件拆分为单独的子目录 请参阅下面的结构
  • 使用 COUNT 个其他字段更新列是 SQL?

    我设置了以下表格 Articles ID TITLE CONTENT USER NUM COMMENTS COMMENTS ID ARTICLE ID TEXT 我需要一个 sql 语句 它使用针对文章的评论计数来更新文章表的 NUM Co
  • Doctrine MongoDB 结果缓存

    如何缓存 Doctrine MongoDB 结果 查看配置代码 它似乎没有像标准 Doctrine 那样内置结果缓存 只有查询缓存 我想过在应用程序中创建自己的缓存层 但返回的对象非常重 因为它们包含视图不需要的大量 Doctrine 逻辑
  • 如何编写 dockerfile 来执行简单的 bash 脚本?

    我正在尝试编写一个 docker 映像来通过 netcat 运行一个简单的网络服务器 所以我的 docker build 文件夹中有 Dockerfile index html run netcat webserver sh The run
  • SQLite 支架“不起作用”

    在 SQLite 版本 3 7 12 1 控制台 中 此查询不起作用 SELECT FROM A UNION SELECT FROM B EXCEPT SELECT FROM A INTERSECT SELECT FROM B 错误信息 错
  • 与实时 matplotlib 绘图交互

    我正在尝试创建一个实时绘图 该绘图会随着更多数据的可用而更新 import os sys import matplotlib pyplot as plt import time import random def live plot fig
  • TypeScript 不提供函数名称

    我有一些打字稿代码 我正在做一些元编程 我需要能够访问instance func name 但是 TypeScript 在编译的 JS 中省略了函数名称 打字稿 class ClassName func ReturnType 编译后的 Ja
  • PACT .NET 消费者测试:灵活长度数组

    我正在使用 pactNet 来测试一个 API 它应该返回一个灵活长度的数组 如果我调用 myApi items 它应该返回一个消费者不知道其确切大小的项目列表 所以答案应该是这样的 id 1 description foo id 2 de
  • 如何从字典中特定索引处删除对 - Swift?

    如何使用remove at DictionaryIndex
  • 多边形的对角线是在里面还是在外面?

    我有三个连续的多边形点 例如 p1 p2 p3 现在我想知道p1和p3之间的正交是在多边形内部还是在多边形外部 我通过取三个向量 v1 v2 和 v3 来做到这一点 多边形中点 p1 之前的点称为 p0 v1 p0 p1 v2 p2 p1
  • 在 C 中使用 popen() 失败?

    我可以运行以下命令 xwd root xwdtopnm pnmtojpeg gt screen jpg 在 Linux 下的终端中 它将生成我当前屏幕的屏幕截图 我尝试使用代码执行以下操作 include
  • 创建公共列并像数据一样转换时间序列

    我有一个 Excel 表格 其中包含 30 多张表格 用于不同的参数 如血压 心率等 其中一个数据框 df1 从一张 Excel 创建 如下所示 df1 pd DataFrame person id 1 1 1 1 2 2 2 2 3 3
  • 如何在 R 中添加不同的趋势线?

    我知道如何使用添加线性趋势线lm and abline函数 但如何添加其他趋势线 例如对数 指数和幂趋势线 这是我之前准备的 set the margins tmpmar lt par mar tmpmar 3 lt 0 5 par mar
  • 根据 WooCommerce 中选择的状态显示或隐藏结账邮政编码字段

    在 Woocommerce 中 如果选择了特定的州字段 我会尝试隐藏结账邮政编码字段 我正在遵循这段代码 根据 WooCommerce 中选择的城市显示或隐藏结账邮政编码字段 https stackoverflow com question
  • TRAMP 忽略 trap-remote-path

    我的 emacs 中有以下内容 require tramp add to list tramp remote path some path add to list tramp remote path tramp default remote
  • 如何使用 jQuery 获取垂直滚动站点中当前可见的幻灯片

    这个问题可能听起来很愚蠢 但它却让我伤透了脑筋 我想做一种垂直滚动演示 由不同的幻灯片组成 效果应该与该网站 类似 http www soleilnoir net believein start http www soleilnoir ne