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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
浅谈JavaScript函数的四种存在形态
Jun 08 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
Apr 24 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
解决Layui 表格自适应高度的问题
Nov 15 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
Nov 21 Javascript
vue组件创建的三种方式小结
Feb 03 Javascript
JavaScript实现省份城市的三级联动
Feb 11 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 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数组的一些常见操作汇总
2011/07/17 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python连接数据库学习之DB-API详解
2017/02/07 Python
python 字典中取值的两种方法小结
2018/08/02 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
致标枪运动员加油稿
2014/02/15 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle