iTakeo

背景随鼠标视差偏移。

不知道叫啥名字,之前挺流行这种效果,鼠标在页面内移动,背景会跟着鼠标反方向偏移,看起来有种视差的感觉,但感觉又不像。

大概如下效果吧。

基本代码如下:

  1. var div = document.querySelector(‘.testItem’);  
  2. var w,h;  
  3. var pagex,pagey;  
  4. setInterval(function(){  
  5.     w = document.documentElement.clientWidth,  
  6.     h = document.documentElement.clientHeight;  
  7.     var l  = parseInt(getstyle(div,’left’));  
  8.     var t  = parseInt(getstyle(div,’top’));  
  9.     div.style[‘left’] = l+(-pagex/5 – l)*.05+’px’;  
  10.     div.style[‘top’] = t+(-pagey/5 – t)*.05+’px’;  
  11. },13);  
  12. function getstyle(obj,name){  
  13.     if(obj.currentStyle){  
  14.         return obj.currentStyle[name];   
  15.     }else{  
  16.         return getComputedStyle(obj,null)[name];    
  17.     };  
  18. };  
  19. window.addEventListener(‘mousemove’,function(ev){  
  20.     pagex = ev.clientX-w/2;  
  21.     pagey = ev.clientY-h/2;  
  22. },false);  

其实还有更简单的,mousemove的时候,直接改变坐标位置,这样做唯一的缺点就是离开窗口,从另一个地方进入的话,会突然跳过去,而不是已动画的时候滑动过去,个人感觉不习惯。

然后,造轮子开始,尝试简单的封装一下,下面是调用方法:

  1. //调用方法    
  2. parallax(‘.item’).init()  
  1. //后面的json里面的range是控制鼠标的触发范围,这样鼠标只有在这里mousemove才会有效果。不写,默认整个页面mousemove都有效果。    
  2. parallax(‘.item’).init({  
  3.     range : ‘.paraWrap’  
  4. });  
  1. //如果想每个元素偏移的距离不同,配置data-scale的参数就可以了,如果想随着鼠标相同的方向偏移,配置data-type为true即可,不写默认反方向:      
  2. <div class=“Item” data-scale=‘6’ data-type=‘true’></div>    

看个例子,这样的:

还有这样的:

DELICIOUS
COOKIES

只是简单的封装了一下,如果不符合自己的效果,可自己下面代码修改。

可以点击这里下载js


2015/09/20 1 / /
标签:  暂无标签

评论回复

  1. 回复 匿名

    😮 😉 😎 rqdsaDSA工球棒工载城城脸色甘发大水放大

验证码: 5 + 4 =

回到顶部