基于jquery的垂直滚动触发器,多参数可设置。
最近闲来无事,多封装些功能性组件。后期会有更多放出来,大家可以多关注一下。
先上参数:
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的垂直滚动触发器,多参数可设置。的更多相关文章
- 基于 jQuery 实现垂直滑动的手风琴效果
今天我们要与大家分享一个漂亮而灵活的垂直 jQuery 手风琴效果.其主要思想是扩大手风琴片上的点击和显示更多的信息.其他内容片段将变得不那么透明.当使用一个导航箭头导航下一个片段,新的片会从顶部或底 ...
- 基于jQuery左侧小图滚动右侧大图显示代码
今天给大家分享一款 jQuery左侧小图滚动右侧大图显示代码是一款基于jQuery实现的左侧滚动图片点击大图查看效果代码.该实例适用浏览器:IE8.360.FireFox.Chrome.Safari. ...
- 基于jQuery实现页面滚动时顶部导航显示隐藏效果
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- 基于jQuery封装的分页组件(可自定义设置)
jQuery封装的分页组件 前几天做了一个vue的组件分页,而现在需求是jquery的分页,我就根据我自己的需求写了一个.在网上找了很久的基于jquery的分页封装,可是都不是我想要的结果,那么今天我 ...
- jquery垂直滚动插件一个参数用于设置速度,兼容ie6
利用外层的块级元素负外边距来滚动 1.使用 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://ww ...
- 使用 jQuery.Pin 垂直滚动时固定导航
ZKEACMS的导航默认是不能固定的,随着页面的滚动而滚动,为了有更好的用户体验,当页面往下滚动时,可以将导航固定在顶端,这样方便用户点击. jQuery Pin 借助jQuery的一个插件 jQue ...
- 基于JQuery打造无缝滚动新闻
JQuery实现 新闻无缝滚动 一.使用"首尾追加"实现无缝滚动 <head lang="en"> <meta charset="U ...
- jQuery图片垂直滚动焦点图
在线演示 本地下载
- jQuery BreakingNews 间歇滚动
BreakingNews 是一款基于jQuery的间歇滚动插件.它可以设置标题.标题颜色.标题背景颜色.链接颜色.字体大小.边框.宽度.自动滚动.间歇时间等等,同时它还好提供两种过度方式--淡入淡出( ...
随机推荐
- Django通过中间件实现登录验证demo
前提:中间件版的登录验证需要依靠session,所以数据库中要有django_session表. from django.conf.urls import url from django.contri ...
- Redis缓存与springboot集成
注意点:
- Redis记录-redis和memcached的区别
1.Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等: 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供lis ...
- VMware ESXI6.0服务器安装
1.制作一个ESXI6.0的系统安装盘 2.服务器启动后加载VMware ESXi 6.0的ISO文件,开始安装. 3.ESXi引导装入程序,VMware ESXi引导过程,在屏幕上方显示的版本号.内 ...
- Python字符串颜色输出
\033[1;31;40m # 1是显示方式(可选),31是字体颜色,40m 是字体背景颜色: \033[0m # 恢复终端默认颜色,即取消颜色设置: # cat col ...
- JMS学习(二)之ActiveMQ
1,ActiveMQ是Apache实现的基于JMS的一个消息服务器.下面记录ActiveMQ的一些基本知识. 2,ActiveMQ connectors:ActiveMQ providesconnec ...
- Linux - awk 文本处理工具五
awk 线上处理常用模式 awk 处理复杂日志 6.19: DHB_014_号百总机服务业务日报:广州 到达数异常! DHB_023_号百漏话提醒日报:珠海 到达数异常! 6.20: DHB_014_ ...
- HDU 1875 畅通工程再续 最小生成树问题
题目描述:输入一个T,表示有T组测试数据,然后每组测试数据有一个C,表示在一个湖里面有C座岛屿,现在要在岛屿之间修建桥,可以修建必须满足的条件是岛与岛之间的距离在10到1000的范围内,然后给出每座岛 ...
- 第11月第3天 直播 rtmp yuv
1. LiveVideoCoreSDK AudioUnitRender ==> MicSource::inputCallback ==> GenericAudioMixer::pushBu ...
- ESXi 6.5 总是会话超时
ESXi 6.5 客户端Web界面会话超时 在VMware ESXi 6.5中,主机客户端Web界面会话每15分钟自动超时一次,然后您必须再次重新登录ESXi主机客户端Web界面. 要避免这种繁琐的情 ...