【定义】

所谓的视差滚动,就是在页面滚动过程中,多层次的元素进行不同程度的位移,带来立体的视差效果。还有很多的奇思妙想的展现方式,都是滚动页面触发的,也可称为视差滚动。视差滚动里面最基础的就是切换背景,这点其实一个CSS就满足了。

【视差滚动原理一】

1 background-attachment: fixed || scroll || local

默认是scroll,内容跟着背景走,而视差滚动页面里用fixed,背景相对页面固定而不跟内容滚动。

很快地我就做出了一个demo出来,还特意配上几张优雅的图片和极富内涵的词句,女神一定会因为我的文采而爱上我的,而且,那些看似简单的“我是内容”不断重复,其实只要细心就会发现里面隐藏着我的表白,情商如此之高的女神,一定会发现,然后我们就可以幸福的在一起,在爱情的滋润下,我很快就能升职加薪,当上总经理,出任CEO,赢取白富美,走上人生巅峰。哈哈哈哈哈哈哈哈,诶?好像不用赢取白富美,那就挑战白富美。

【视差滚动原理二】

当然要来写非常酷的动画效果。
在原理的demo1的基础上,我在scroll事件上添加一些动画事件。

window.addEventListener('scroll',function(e){var scrollTop = window.scrollY;if(scrollTop > 0 && scrollTop < articleHeight){title1.classList.add('title-anim');content1.classList.add('content-anim');}else if(scrollTop >= articleHeight && scrollTop < articleHeight*2){title2.classList.add('title-anim');content2.classList.add('content-anim');}else if(scrollTop >= articleHeight*2 && scrollTop < articleHeight*3){title3.classList.add('title-anim2');content3.classList.add('content-anim');}})

视差滚动的表现方式非常多,滚动到页面某个值后会触发一个CSS3动画,这也是众多视差滚动中常见的一种。

demo2_anim

(这个Demo使用了CSS3动画,请使用现代浏览器查看)

【视差滚动原理三】
视差滚动中最突出的内容就是立体的视差效果,最具有说明代表性的就是超级玛丽的游戏场景

当玩家操作马里奥移动时,水管和墙块更马里奥在同一水平层,移动速度最快。天上的白云为中层背景图,移动速度中等。而小山丘是最远的背景图,移动速度最慢。三个层次内容按不同速度移动,就会带来一种立体的视差效果。

在dom结构上,把同一层的dom元素都放到一个div里面,html结构如下。

<div id="scene_back" class="scene"><img id="pokemon1" src="./img/001.png"><img id="pokemon4" src="./img/004.png"><img id="pokemon7" src="./img/007.png">
</div>
<div id="scene_center" class="scene"><img id="pokemon2" src="./img/002.png"><img id="pokemon5" src="./img/005.png"><img id="pokemon8" src="./img/008.png">
</div>
<div id="scene_front" class="scene"><img id="pokemon3" src="./img/003.png"><img id="pokemon6" src="./img/006.png"><img id="pokemon9" src="./img/009.png">
</div>

在页面滚动过程中,我们获取页面的scrollTop的值,根据不同参数值去设置各自scene的top值,这样滚动页面的时候,不同的速度就出来了

var sceneBack = document.getElementById('scene_back'),sceneCenter = document.getElementById('scene_center'),sceneFront = document.getElementById('scene_front');
var old_top1 = 0,old_top2 = 200,old_top3 = 700;addEvent(window,'scroll',onScroll);
onScroll();function onScroll(e){var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;sceneBack.style.top = old_top1+scrollTop*.9+'px';sceneCenter.style.top = old_top2+scrollTop*.7+'px';sceneFront.style.top = old_top3+scrollTop*.3+'px';
}function addEvent(eventTarget, eventType, eventHandler) {if (eventTarget.addEventListener) {eventTarget.addEventListener(eventType, eventHandler, false);} else {if (eventTarget.attachEvent) {eventType = "on" + eventType;eventTarget.attachEvent(eventType, eventHandler);} else {eventTarget["on" + eventType] = eventHandler;}}
}

【视差滚动一种效果实现】
上下颠倒出现,这个跟原理三是一样的,唯独就是不是所有的元素都是往上升,而是一些元素上升,一些元素下沉。在计算top值的时候,不是“加上”,变成“减去”scrollTop就会有相应的效果。亲自试了一下,效果就出来了,但是很明显有个问题,就是上升元素和下沉元素在同一水平线上的时候,这时却不是在页面正中间。这时候思考一下问题所在就好了。计算top的公式是下面

newTop1 = oldTop1 + scrollTop * x1 ;   (x是个系数)
newTop2 = oldTop2 - scrollTop * x2 ;   (x是个系数)

我们假设,oldTop为-1000,oldTop2为1000,我们希望滚动到500的时候,两者在同一水平线上,这时newTop1和newTop2都相同为500才能再页面中心(注意不是0,自个想想就明白)。这样得到x1为2,x2为0。代码如下。

var sona = document.getElementById('sona'),ahri = document.getElementById('ahri');
var old_top1 = -1000,old_top2 = 1000;addEvent(window,'scroll',onScroll);onScroll();function onScroll(e){var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;sona.style.top = old_top1+scrollTop*2+'px';ahri.style.top = old_top2-scrollTop*0+'px';
}function addEvent(eventTarget, eventType, eventHandler) {if (eventTarget.addEventListener) {eventTarget.addEventListener(eventType, eventHandler, false);} else {if (eventTarget.attachEvent) {eventType = "on" + eventType;eventTarget.attachEvent(eventType, eventHandler);} else {eventTarget["on" + eventType] = eventHandler;}}
}

转载于:https://www.cnblogs.com/xs-yqz/p/4972902.html

视差滚动效果原理解析和效果实现相关推荐

  1. 30个让人兴奋的视差滚动(Parallax Scrolling)效果网站

    30个让人兴奋的视差滚动(Parallax Scrolling)效果网站 转载于:https://www.cnblogs.com/momomo/archive/2012/03/02/2377683.h ...

  2. 让人兴奋的视差滚动(Parallax Scrolling)效果网站分享

    视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了这项技术.今天这篇文章就与大 ...

  3. 视差滚动的原理及实现

    1.视差滚动 视差滚动(Parallax Scrolling)指网页滚动过程中,多层次的元素进行不同程度的移动,视觉上形成立体运动效果的网页展示技术. 2.特性 视差滚动效果酷炫,适合于个性展示的场合 ...

  4. 视差滚动(Parallax Scrolling)效果的原理和实现

    视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了这项技术. 可以先看看效果: ...

  5. 视差滚动的爱情故事之优化篇

    上篇博客链接:视差滚动的爱情故事 [优化问题 : 解决Chrome下跳动的bug] 在上一篇的爱(diao)情(si)故事里面,demo3在 Chrome下是这样的问题:鼠标滚动视差元素动画生硬,鬼畜 ...

  6. Sequence.js 实现带有视差滚动特效的图片滑块

    Sequence.js 功能齐全,除了能实现之前分享过的现代的图片滑动效果,还可以融合当前非常流行的视差滚动(Parallax Scrolling)效果.让多层背景以不同的速度移动,形成立体的运动效果 ...

  7. android 开机动画 渐变,[Parallax Animation]实现知乎 Android 客户端启动页视差滚动效果...

    前言 Parallax Scrolling (视差滚动),是一种常见的动画效果.视差一词来源于天文学,但在日常生活中也有它的身影.在疾驰的动车上看风景时,会发现越是离得近的,相对运动速度越快,而远处的 ...

  8. jquery实现的视差滚动教程(视差大背景效果)

    视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了 这项技术.现在越来越多的网 ...

  9. 【面试题】1014- 面试官:如何使用CSS完成视差滚动效果?

    一.是什么 视差滚动(Parallax Scrolling)是指多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验 我们可以把网页解刨成:背景层.内容层.悬浮层 当滚动鼠标滑轮的时候 ...

  10. QQTIM首页视差滚动效果案例

    <QQ TIM>案例 html 在头部引入html5shiv.min.js文件,此处作用是判断浏览器是否是IE9以下版本的, 如果是,则执行兼容性文件,不是的话就跳过 <!--[if ...

最新文章

  1. npm install遇到ENOENT: no such file or directory, rename错误
  2. Istio-0.8.0在Minikube环境中快速启动Bookinfo示例
  3. 保证java的jar包在后台运行
  4. html游戏闪,HTML最简单的文字闪烁代码
  5. HDU 1003——Max Sum(动态规划)
  6. 迷宫收集星星 并查集解答
  7. phpcms mysql配置文件_PhpCms系统设置:config.inc.php文件配置说明
  8. google浏览器插件 开发 获取页面指定数据_程序员必备的4款Chrome插件,编程神器...
  9. 使用JPA标准@ViewScoped通过分页,过滤和排序进行Primefaces DataTable延迟加载
  10. VMWare MAC系统调整磁盘
  11. php频繁执行sql,php - 一条SQL执行多次 sum 特别慢
  12. 乐队设备--反馈抑制器学习笔记
  13. 计算机固态硬盘256g,1t(后悔买256g的固态硬盘了)
  14. python 中chr_python中chr
  15. 测试吃鸡fps软件,GTX1050Ti吃鸡足矣 2017热销游戏本吃鸡横评
  16. 简单创意思维导图绘制教程分享
  17. 动目标检测算法——高斯混合背景建模
  18. 【牛津大学博士论文】关系数据的学习和推理
  19. Java-PTA 无聊的小明来数1
  20. Boost:标记的简单双图bimap的测试程序

热门文章

  1. 003 第一个Python程序
  2. eclipse中如何远程java debug配置
  3. C#语言中的修饰符汇总
  4. 「本地搭建」worpress博客系统
  5. Ext中extend
  6. js实现php中图片轮播,两种js实现轮播图的方式
  7. input 禁止 复制 粘贴 剪切 操作
  8. 微信小程序CSS之Flex布局
  9. 怎么估算空间利用率?新研发传感器分分钟搞定!
  10. 文件和目录属性ls which alias