分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

基于jquery的垂直滚动触发器,多参数可设置。

发布时间:2023-09-06 01:09责任编辑:蔡小小关键词:暂无标签

最近闲来无事,多封装些功能性组件。后期会有更多放出来,大家可以多关注一下。

先上参数:

            type:"show",           默认为“show”,“show”意为当能够在可视区看到指定位置的节点时触发,“scroll”意为浏览器滚动过指定结点时触发。
            pos:"#scrollBox",       默认为"#scrollBox",通过此结点获取指定位置。
            delayDistance:0,       在指定位置的上下浮动距离,单位为像素,可为负值。
            single:true,            是否只触发一次。 true(是)、false(不是)
            passCallback:function(){},    超过指定位置的触发函数。
            backCallback:function(){}     小于指定位置时的触发函数。

demo如下:

1.html

<body style="height: 6000px;"><div style="height: 1000px;background:#ff0"></div><div id="trigger1" style="height: 1500px;background: #f00;"></div></div>

2.js(组件)

 ???function scrollTrigger(obj){ ???????this.set={ ???????????type:"show", ???????????pos:"#scrollBox", ???????????delayDistance:0, ???????????single:true, ???????????passCallback:function(){}, ???????????backCallback:function(){} ???????} ???????this.passFlag=false; ???????this.backFlag=false; ???????$.extend(this.set,obj) ???????var _this=this; ???????this.init=function(){ ???????????????$(window).scroll(function(){ ???????????????????if(_this.set.type=="scroll"){ ???????????????????????if($(window).scrollTop()>=$(_this.set.pos).offset().top+_this.set.delayDistance){ ???????????????????????????if(_this.set.single==true&&_this.passFlag==false){ ???????????????????????????????????_this.set.passCallback(); ???????????????????????????????????_this.passFlag=true; ???????????????????????????}else if(_this.set.single==true&&_this.passFlag==true){ ???????????????????????????????????????????????????????????????}else{ ???????????????????????????????_this.set.passCallback(); ???????????????????????????} ???????????????????????} ???????????????????????if($(window).scrollTop()<$(_this.set.pos).offset().top+_this.set.delayDistance){ ???????????????????????????if(_this.set.single==true&&_this.backFlag==false){ ???????????????????????????????????_this.set.backCallback(); ???????????????????????????????????_this.backFlag=true; ???????????????????????????????????????????????????????}else if(_this.set.single==true&&_this.backFlag==true){ ???????????????????????????????????????????????????????????}else{ ???????????????????????????????_this.set.backCallback(); ???????????????????????????} ???????????????????????} ???????????????????} ???????????????????if(_this.set.type=="show"){ ???????????????????????if($(window).scrollTop()>=$(_this.set.pos).offset().top-$(window).height()+_this.set.delayDistance){ ???????????????????????????if(_this.set.single==true&&_this.passFlag==false){ ???????????????????????????????????_this.set.passCallback(); ???????????????????????????????????_this.passFlag=true; ???????????????????????????}else if(_this.set.single==true&&_this.passFlag==true){ ???????????????????????????????????????????????????????????????}else{ ???????????????????????????????_this.set.passCallback(); ???????????????????????????} ???????????????????????} ???????????????????????if($(window).scrollTop()+$(window).height()<$(_this.set.pos).offset().top+_this.set.delayDistance){ ???????????????????????????if(_this.set.single==true&&_this.backFlag==false){ ???????????????????????????????????_this.set.backCallback(); ???????????????????????????????????_this.backFlag=true; ???????????????????????????????????????????????????????}else if(_this.set.single==true&&_this.backFlag==true){ ???????????????????????????????????????????????????????????}else{ ???????????????????????????????_this.set.backCallback(); ???????????????????????????} ???????????????????????} ???????????????????} ???????????????}) ???????????????????????????} ???????this.init(); ???}

3. js (调用)

 ???var trigger1=new scrollTrigger({ ???????????type:"show", ???????????pos:"#trigger1", ???????????single:false, ???????????delayDistance:0, ???????????passCallback:function(){ ???????????????console.log("pass"); ???????????}, ???????????backCallback:function(){ ???????????????console.log("back"); ???????????} ???})

基于jquery的垂直滚动触发器,多参数可设置。

原文地址:http://www.cnblogs.com/pomelott/p/7487041.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved