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 相关文章推荐
准确获得页面、窗口高度及宽度的JS
Nov 26 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
jquery easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
Vuex入门到上手教程
Jun 20 Javascript
15个顶级开源JavaScript框架和库
Oct 10 Javascript
详解Angular模板引用变量及其作用域
Nov 23 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 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生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
javascript 简练的几个函数
2009/08/29 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
python实现bucket排序算法实例分析
2015/05/04 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
python实现最速下降法
2020/03/24 Python
高三学习决心书
2014/03/11 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
国际贸易系求职信
2014/08/09 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书