jQuery实现根据滚动条位置加载相应内容功能


Posted in Javascript onJuly 18, 2016

实现jQuery根据滚动条位置加载相应的内容:向下滚动时当内容区域滚动到可视窗口高度的一半时,加载动画内容;向上滚动到相应的内容区域时也重新加载动画内容!

1.实现思路:

先静态布局好HTML结构,使用伪类:hover模拟动画效果,再使用jQuery 控制动画类名的切换来实现效果!主要判断滚动的方向,以及相应方向上加载动画的时机(即何时才加载动画的判断条件!关键点!)。

2.思维草稿图:

向下滚动加载动画判断条件:(代码中addClass()函数)

jQuery实现根据滚动条位置加载相应内容功能

向上滚动加载动画判断条件:(代码中addClass2()函数)

jQuery实现根据滚动条位置加载相应内容功能

3.代码实现:

HTML:

<div class="header">
 实现思路:先布局好静态布局,再使用hover模拟动画行为,再改为类名on等用js进行控制!
 </div>
 <div class="banner">
 <h1>前端开发</h1>
 <p>
 Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。在互联网的演化进程中,
 网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以
 浏览为主。
 </p>
 </div>
 <div class="con">
 <div class="con_l"><img src="images/1.jpg" alt="" /></div>
 <div class="con_2"><img src="images/2.jpg" alt="" /></div>
 </div>
 <div class="news">news</div>
 <div class="footer">footer</div>

CSS:

*{margin:0px;padding:0px;}//粗暴地清除默认边距
body{
 font-family:"Arial Microsoft Yahei";
 font-size:16px;
 font-weight:bold;
}
.header{
 width:100%;height:500px;
 background-color: #10E668;
}
.banner{
 width:100%;height:600px;
 background:#F7CF3B;
 text-align: center;
 margin:30px auto;
 overflow: hidden;

}
.banner h1{
 font-size:30px;
 padding:50px 0;
 position:relative;
 top:400px;
 transition:all 0.3s 0.3s linear;
}
.banner p{
 font-size:18px;
 width:80%;
 margin:30px auto;
 line-height: 1.8em;
 text-align: left;
 text-indent:2em;
 position:relative;
 top:400px;
 transition:all 0.5s 0.5s linear;
}
//动画类
.banner.on h1,.banner.on p{
 top:0px;
}

.con{
 width:80%;height:720px;
 background:#508E5A;
 margin:20px auto;
 overflow: hidden;
}
.con img{
 width:400px;height:auto;
}
.con_l{
 float: left;
 position:relative;
 left:-400px;
 transition:all 0.3s 0.3s linear;
}
.con_2{
 float: right;
 position:relative;
 right:-400px;
 transition:all 0.3s 0.3s linear;
}
//动画类
.con.on .con_l{
 left:0;
}
.con.on .con_2{
 right:0;
}
.news{
 width:100%;height:600px;
 background:#CA3400;
}
.footer{
 width:100%;height:600px;
 background-color: #ccc;
}

jQuery:

$(function(){
 /*version 0.1.0 函数封装*/
 //向下滚动时
 function addClass(ele){
 var winH=$(window).height()*0.5;//可视窗口的高度的一半,更改0.5可以调整滚动到底部、中部、顶部时候开始加载
 var top=$(window).scrollTop();//可视窗口的滚动高度
 var ele_t=$(ele).offset().top;//内容区的top
 var ele_h=$(ele).height();//内容区的高

 //判断条件,看草稿图1!
 if(top<ele_t-winH){
 $(ele).removeClass('on');
 }else if((top>ele_t-winH)&&(top<ele_t+ele_h)){
 $(ele).addClass('on');
 }else{
 $(ele).removeClass('on');
 }
 }
 //向上滚动时,看草稿图2!
 function addClass2(ele){
 var winH=$(window).height()*0.5;//更改0.5可以调整滚动到底部、中部、顶部时候开始加载
 var top=$(window).scrollTop();//可视窗口的滚动高度
 var ele_t=$(ele).offset().top;//内容区的top
 var ele_h=$(ele).height();//内容区的高

 //判断条件
 if(top>ele_t+ele_h){
 $(ele).removeClass('on');
 }else if((top<ele_t+ele_h)&&(top>ele_t-winH*2)){
 $(ele).addClass('on');
 }else{
 $(ele).removeClass('on');
 }
 }
 //获取前一次的滚动高度(这里是第一次)
 var firstTop=$(window).scrollTop();

 $(window).scroll(function(){
 //每次滚动重新获取滚动高度
 var lastTop=$(this).scrollTop();
 //后一次滚动高度大于前一次滚动高,说明向下滚动,否则想上滚动!
 if(lastTop>firstTop){
 //加载对应的内容区域
 addClass('.banner');
 addClass('.con');
 }else{
 addClass2('.banner');
 addClass2('.con');
 }
 //每次都将后一次的滚动高度赋值给前一次的滚动高度
 firstTop=lastTop;
 });
});

4.总结:

这种效果用于模拟滚动加载动画内容,重难点在于判断滚动的方向、相应滚动方向上加载动画时候的判断条件,感觉逻辑还是有待提升的!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript脚本编程解决考试分数统计问题
Oct 18 Javascript
Javascript中的window.event.keyCode使用介绍
Apr 26 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
jquery实现简单易懂的图片展示小例子
Nov 21 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 Javascript
第一次接触神奇的Bootstrap网格系统
Jul 27 Javascript
Vue中保存用户登录状态实例代码
Jun 07 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
May 30 Javascript
微信小程序实现折叠展开效果
Jul 19 Javascript
使用异步controller与jQuery实现卷帘式分页
Jun 18 jQuery
原生JS实现弹幕效果的简单操作指南
Nov 10 Javascript
JS HTML5拖拽上传图片预览
Jul 18 #Javascript
jQuery 操作input中radio的技巧
Jul 18 #Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 #Javascript
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 #Javascript
浅析JavaScript中的array数组类型系统
Jul 18 #Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 #Javascript
javascript时间差插件分享
Jul 18 #Javascript
You might like
一个PHP二维数组排序的函数分享
2014/01/17 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
详解JavaScript树结构
2017/01/09 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Django如何实现内容缓存示例详解
2017/09/24 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
python实现小世界网络生成
2019/11/21 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
初入社会应届生求职信
2013/11/18 职场文书
工程业务员工作职责
2013/12/07 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
六查六看剖析材料
2014/02/15 职场文书
小学班主任寄语大全
2014/04/04 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
后备干部培训方案
2014/05/22 职场文书
管理工程专业求职信
2014/08/10 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
党校学习党性分析材料
2014/12/19 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript