jQuery - 分别处理同一类的多个实例?

2023-12-19

Goal:

  1. 我正在尝试创建一个视差滚动 effect.

  2. The 视差容器是这样实现的: < div class="parallax slide-1" > < /div >

  3. 我需要启动视差效果,当它的容器已滚动到视图中.

  4. 一旦有了离开视图,效果需要停止。

问题:

到目前为止,jQuery 运行良好。

但是:既然我可以拥有一页上有多个视差容器(例如,顶部一个 + 底部一个)我需要对它们进行治疗独立地通过 jQuery。

目前的效果是...

  • 1.) 一旦第一个视差容器滚动到视图中,就会触发每个视差容器
  • 2.) 一旦每个视差容器离开视图,它就会停止。

所以还不是完全的解决方案。

Thoughts

我认为它应该与 jQuerys .each() 一起使用,但到目前为止我还无法真正让它工作。

我认为当我尝试实现它时,我对某个地方的嵌套函数感到困惑。

Code

这是我当前的代码:

$(document).ready(function(){

$.fn.is_on_screen = function(){
    var win = $(window);
    var viewport = {
        top : win.scrollTop(),
        left : win.scrollLeft()
    };
    viewport.right = viewport.left + win.width();
    viewport.bottom = viewport.top + win.height();

    var bounds = this.offset();
    bounds.right = bounds.left + this.outerWidth();
    bounds.bottom = bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};

$(window).scroll(function(){ // Bind window scroll event
    if( $('.parallax').length > 0 ) { // Check if target element exists in DOM
        if( $('.parallax').is_on_screen() ) { // Check if target element is visible on screen after DOM loaded

            // ANIMATE PARALLAX EFFECT
            // If Parallax Element is scrolled into view do...

            // Variables
                var speed     = 2.5;
                var calc      = (-window.pageXOffset / speed) + "px " + (-window.pageYOffset / speed) + "px";
                var container = $(".parallax");

            // Function
                container.css({backgroundPosition: calc});

        } else {
            // ...otherwise do nothing
        }
    }
});

})

假设您想要执行的滚动是相同的(使用相同的视差方法等),您可以在类上使用 .each 。例子:

$(window).scroll(function(){ // Bind window scroll event
    $( ".parallax" ).each(function() {
        if( $( this ).is_on_screen() ) { // Check if target element is visible on screen after DOM loaded

            // ANIMATE PARALLAX EFFECT
            // If Parallax Element is scrolled into view do...
            // remember to replace ('.paralax') with (this)

            // Variables
                var speed     = 2.5;
                var calc      = (-window.pageXOffset / speed) + "px " + (-window.pageYOffset / speed) + "px";
                var container = $( this );

            // Function
                container.css({backgroundPosition: calc});

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

jQuery - 分别处理同一类的多个实例? 的相关文章

随机推荐

  • Javascript - 在脚本位置插入元素

    例如 如何在脚本位置插入元素 不依赖 div 的 id 或类 div class div div where addDivSayHello js将插入 div 子级 div hello div 结果示例 div class div div
  • HTML5 中的交互式平面图 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我必须为公寓楼开发交互式平面图导航器和查看器 它将继承其基于 Flash 的前身 我现在正在评估最适合在 HTML5 中实现这一点的技巧和技术
  • Laravel 中的attach()方法有什么用?

    我不知道这个方法有什么用 我在某人的代码上看到了这样的东西 user JWTAuth parseToken gt authenticate new car new Car new car gt name request gt name ne
  • MyBatis - ResultHandler 未被调用

    我按照这个例子 https code google com p mybatis wiki ResultHandlerExample https code google com p mybatis wiki ResultHandlerExam
  • NSUserDefaults registerDefaults 如何工作? [复制]

    这个问题在这里已经有答案了 当我设置 registerDefaults 时application didFinishLaunchingWithOptions 我通过应用程序设置了 NSUserDefaults 的默认值 NSMutableD
  • Web API 2 RequireHttps 允许 http 连接

    我在 MVC Web API 2 控制器中创建了以下操作 ResponseType typeof int RequireHttps public IHttpActionResult SaveLead EcommerceLead lead 但
  • 使用 Django 提供动态生成的图像

    如何在 Django 中提供动态生成的图像 我有一个 html 标签 img src images dynamic chart png 链接到此请求处理程序 该处理程序创建内存中图像 def chart request img Image
  • java: apache HttpClient > 如何禁用重试

    我在网站上使用 Apache Httpclient 进行 Ajax 调用 在某些情况下 对外部 Web 服务的请求会失败 通常会出现以下情况 处理请求时捕获的 I O 异常 java net ConnectException 连接超时 连接
  • 如何使用管道在两个程序之间发送简单的字符串?

    我尝试在网上搜索 但几乎没有任何资源 一个小例子就足够了 编辑 我的意思是 两个不同的 C 程序相互通信 一个程序应该发送 Hi 另一个程序应该接收它 类似的事情 常规管道只能连接两个相关的进程 它是由一个进程创建的 当最后一个进程关闭它时
  • 使用 Android DateUtils API 在 Android 中将相对日期格式化为人类可读的格式

    我有一个日期字段 lastUpdated 我想将此日期翻译为人类可读的格式 例如 今天 1 天前 2 天前 我在用android text format DateUtils http developer android com refere
  • 错误:找不到资源整数/google_play_services_version(又名应用程序:整数/google_play_services_version)

    编译或运行项目时出现错误 我想计算我行驶的距离 我的Android studio版本是Android Studio 3 1 4 当我在 build gradle Model app 中添加以下库时 会发生此错误 implementation
  • JavaFx 2.x:如何在图表上写入文本?

    通过在图表上单击鼠标左键 我想通过创建文本区域矩形来写入文本 以便能够调整大小和移动 任何帮助真的很感激 Edit 嗨 sarcan 非常感谢您的友好回复 我尝试了你的代码 它编译并绘制了带有注释的面积图 非常出色的工作 我现在需要更改您的
  • 递增数字作为 Firestore 文档名称?

    基本上总结在标题中 我想让在特定集合中创建的每个新文档都具有增量排序的序列号 这是为了正确跟踪写入数据库的新订单 AutoID是随机的并会导致排序问题 我希望数据易于管理 这可以通过云功能实现吗 我可以查看任何示例代码片段吗 谢谢你 Use
  • 从 URL iOS 加载图像 [重复]

    这个问题在这里已经有答案了 我正在尝试从图像 URL 加载图像 我研究和尝试过的所有代码都发现了一些错误 其中很多与新的 ARC 兼容性有关 我需要将图像加载到图像视图中 任何帮助表示赞赏 Thanks 我将从这里改编吉姆 多维的回答从 U
  • 带预处理器的稀疏矩阵求解器

    我有一个scipy sparse csc matrix稀疏矩阵A形状的 N N where N是关于15000 A有小于1 非零元素 我需要解决Ax b尽可能节省时间 Using scipy sparse linalg spsolve大约需
  • 用 Go (golang) 编写 Ruby 扩展

    是否有一些关于如何在 Go 中编写 Ruby 扩展的教程或实践课程 Go 1 5 添加了对构建可从 C 因此可以通过 FFI 从 Ruby 调用的共享库的支持 这使得该过程比 1 5 之前的版本 当时需要编写 C 粘合层 更容易 并且 Go
  • 谷歌日历的 API OAuth Google 集成访问错误(来源不匹配)

    我正在将谷歌日历与 Angular UI 日历集成 以获取谷歌日历的事件数据 这是我的 HTML div div
  • 通过 JavaScript 迭代/解析 JSON 对象

    我在使用 jQuery Ajax JSON 时遇到问题 我正在使用 jQuery ajax post 像这样 ajax type POST dataType json url someurl com data cmd escape me c
  • Android 上的 XMLSchema 验证

    我维持JDOM项目 http www jdom org 我正在尝试在 Android 上 验证 它 大多数事情都工作正常 但 XML 模式验证却存在问题 我的问题是 有没有办法在 Android 上进行 XMLSchema 验证 如果有的话
  • jQuery - 分别处理同一类的多个实例?

    Goal 我正在尝试创建一个视差滚动 effect The 视差容器是这样实现的 lt div class parallax slide 1 gt lt div gt 我需要启动视差效果 当它的容器已滚动到视图中 一旦有了离开视图 效果需要