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 相关文章推荐
javascript 面向对象思想 附源码
Jul 07 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
May 26 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
Aug 20 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
jQuery网页版打砖块小游戏源码分享
Aug 20 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
vue+Element-ui实现分页效果实例代码详解
Dec 10 Javascript
简单使用webpack打包文件的实现
Oct 29 Javascript
vue项目实现多语言切换的思路
Sep 17 Javascript
基于Cesium绘制抛物弧线
Nov 18 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
高中生职业规划范文
2014/03/09 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
协议书范文
2015/01/27 职场文书
出国留学导师推荐信
2015/03/26 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server