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 04 Javascript
js显示时间 js显示最后修改时间
Jan 02 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
分享12个非常实用的JavaScript小技巧
May 11 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 Javascript
js获取html页面代码中图片地址的实现代码
Mar 05 Javascript
AngularJS模态框模板ngDialog的使用详解
May 11 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
浅谈Javascript常用正则表达式应用
Mar 08 Javascript
原生js+ajax分页组件
Jan 30 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中的字符串函数
2006/10/09 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
密码强度检测效果实现原理与代码
2013/01/04 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
python与C互相调用的方法详解
2017/07/14 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
校园报刊亭的创业计划书
2014/01/02 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
社区志愿者活动方案
2014/08/18 职场文书
房产授权委托书范本
2014/09/22 职场文书
办公室禁烟通知
2015/04/23 职场文书