jQuery视差滚动效果网页实现方法经验总结


Posted in Javascript onSeptember 29, 2016

本文总结分析了jQuery视差滚动效果网页实现方法。分享给大家供大家参考,具体如下:

首先说两个核心函数,当然是基于jQuery的:

1、$(document).scrollTop() ;

该函数主要是返回页面当前顶部距离页面顶部的像素值,是一个非负整数。

2、$(window).scroll();

该事件是监控页面是否滚动,一旦滚动则触发其回调函数。

由此两个函数,我们得到下面的代码:

$(window).scroll(function() {
var top = $(document).scrollTop();
if (top == 100) alert(top);
});

以上代码的意思是:当页面滚动时,检查当前顶部距离页面起始之间的像素是否为100,是则弹出消息框。

当能判断滚动的距离后,就可以进行其他的操作了。剩下的就是各种css的定位了。

在制作页面的时候,我们要确定那些图片是需要进行视差滚动的。对于每个图片,我们都需要将CSS属性定义为

position: absolute;

此刻该div会漂移到页面的左上角,当然最好写上 left: 0px; top: 0px;还有该div的宽度和高度,有必要的话,需要写上overflow和background,所有的图片都应该是png格式的,这个大家懂的。

设置好属性后,就进行定位div的起始位置。也就是修改left和top,有必要的话可以修改right和bottom。

等以上工作完成后,就可以进行动画设置了。

用到的函数就是css了,我是这样设置的:

$('#text1').css('top', text1_top-parseInt(s_top)*0.15+'px');

以上代码放在scroll()函数内,只要监测到页面滚动就开始执行。其中 s_top 是当前的滚动距离,之前提到过。text1_top 是 $('#text1')的原始位置,且当页面加载后,就需要读取。一般用:

var text1_top = $('#text1').offset().top;

获取,不能放在scroll()函数内。

现在就开始叙述视差滚动原理了:

当页面加载完毕后,得到$('#text1')距离页面顶部的高度,并赋值给text1_top。

当页面滚动事件触发后,执行 $('#text1').css('top', text1_top-parseInt(s_top)*0.15+'px') 语句,意思是:随着页面往下的滚动,将text1的顶部距离减去当前移动距离的0.15倍。也就是说页面每往下移动100个像素,text1只往上移动15个像素,以此类推。这里的减号需要注意,如果是加号,那就是往下移动15个像素。换句话说,加号是同向,减号是反向。

当页面滚动到某个距离后才进行触发,我的写法是判断:

if (s_top > 200) {
$('#text1').css('top', text1_top-parseInt(s_top - 200)*0.15+'px');
}

当滚动距离到200像素时,运行后面的语句:这里有一个不同是s_top - 200,这里是基数从0开始算,如果没有减200,那么这个基数就不是0,而是200。那么#text1的视差滚动也不会正确的。

最后,我想说一下offset函数,他的主要目的是确定当前元素所在的left和top的数值。我们之前说过用 position: absolute; 来进行div的设置,如果div没有设置这个,但需要滚动的话,那么必须首先用offset函数确定某个元素的left和top后,用css函数首先赋值给需要定位的元素(一定要在设置position: absolute;之前),再设置该元素为 position: absolute; 这个也是需要在scroll()函数之外进行的。

编写视差滚动页面的时候,最大的体会就是要思路清晰,再次就是注意运行的顺序,有时候需要用到回调函数。

需要有个相对安静的环境去写代码,精神要放松,这样效率才会更高,需要休息的时候就要休息,写代码时要一气呵成。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
js获取浏览器基本信息大全
Nov 27 Javascript
node.js中的events.emitter.removeListener方法使用说明
Dec 10 Javascript
node.js中的http.createClient方法使用说明
Dec 15 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 Javascript
文件上传,iframe跨域数据提交的实现
Nov 18 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
JS实现的找零张数最小问题示例
Nov 28 Javascript
详解ESLint在Vue中的使用小结
Oct 15 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 Javascript
js仿小米官网图片轮播特效
Sep 29 #Javascript
基于jquery实现弹幕效果
Sep 29 #Javascript
js获取Get值的方法
Sep 29 #Javascript
js带闹铃功能的倒计时代码
Sep 29 #Javascript
JavaScript实现通过select标签跳转网页的方法
Sep 29 #Javascript
运用js教你轻松制作html音乐播放器
Apr 17 #Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 #Javascript
You might like
精通php的十大要点(上)
2009/02/04 PHP
PHP 引用是个坏习惯
2010/03/12 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
python通过socket查询whois的方法
2015/07/18 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
2014年党总支工作总结
2014/12/18 职场文书
2015年项目工作总结
2015/04/29 职场文书
警示教育片观后感
2015/06/17 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android
vue实现登陆页面开发实践
2022/05/30 Vue.js