Go Back   CodingForums.com > :: Client side development > JavaScript programming > JavaScript frameworks

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 10-26-2012, 09:06 AM   PM User | #1
patchgill
New to the CF scene

 
Join Date: Sep 2011
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
patchgill is an unknown quantity at this point
Auto scroll to nearest container

I'm having a bit of a problem with a site I'm building.
I want an effect that if your in between 2 div's it will auto scroll after the mouse has been stationary for approx. 2 seconds.
An example of this effect can be found on http://www.tigihairreborn.com/en-gb/ which I think uses ScrollTo.js to create the effect.

My site uses the same layout with each div container been 1000px. I can use scrollTo.js to click a link to take me too a container, but I want it to detect if its not at the top of a div and scroll to the closest one.

Any information to point me in the correct direction would be greatfully appreciated.

Thanks in advance
J
patchgill is offline   Reply With Quote
Old 10-26-2012, 12:27 PM   PM User | #2
vwphillips
Senior Coder

 
Join Date: Mar 2005
Location: Portsmouth UK
Posts: 4,355
Thanks: 3
Thanked 458 Times in 445 Posts
vwphillips is a jewel in the roughvwphillips is a jewel in the roughvwphillips is a jewel in the rough
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title></title>
<style type="text/css">
/*<![CDATA[*/

.anchor {
  width:100px;height:1000px;background-Color:red;
}

/*]]>*/
</style>

<script type="text/javascript">
/*<![CDATA[*/
// Scroll to Anchor. (26=October-2012)
// by Vic Phillips - http://www.vicsjavascripts.org.uk/

function zxcScrollTo(o){
 var ms=o.ScrollDuration,hold=o.ScrollHold,ms=typeof(ms)=='number'?ms:1000,reg=new RegExp('\\W'+o.AnchorClass+'\\W'),els=document.getElementsByTagName('*'),ary=[],z0=0;
 for (;z0<els.length;z0++){
  if(reg.test(' '+els[z0].className+' ')){
   ary.push(els[z0]);
  }
 }
 this.ary=ary
 this.ms=ms;
 this.hold=(typeof(hold)=='number'?hold:ms*4)+ms;
 this.nu=-1;
 this.set()
 this.addevt(document,'mousemove','set');
}

zxcScrollTo.prototype={

 set:function(){
  var o=this;
  clearTimeout(o.to);
  o.to=setTimeout(function(){ o.scroll(); },o.hold)
 },

 scroll:function(){
  var o=this,top=o.wwhs()[3],max=20000,nu,to,ms,z0=0;
  for (;z0<o.ary.length;z0++){
   if (Math.abs(top-o.pos(o.ary[z0]))<max){
    nu=z0;
   }
   max=Math.abs(top-o.pos(o.ary[z0]));
  }
  to=o.pos(o.ary[nu])
  ms=o.ms*Math.abs((to-top)/o.wwhs()[1])
  clearTimeout(o.dly);
  o.animate(top,o.pos(o.ary[nu]),new Date(),ms,Math.PI/(2*ms));
 },

 wwhs:function(){
  if (window.innerHeight) return [window.innerWidth-10,window.innerHeight-10,window.pageXOffset,window.pageYOffset];
  else if (document.documentElement.clientHeight) return [document.documentElement.clientWidth-10,document.documentElement.clientHeight-10,document.documentElement.scrollLeft,document.documentElement.scrollTop];
  return [document.body.clientWidth,document.body.clientHeight,document.body.scrollLeft,document.body.scrollTop];
 },

 animate:function(f,t,srt,mS,i){
  var o=this,ms=new Date().getTime()-srt,now=Math.floor((t-f)*Math.sin(i*ms)+f),now1=(t-f)/mS*ms+f;
  if (isFinite(now)){
   window.scrollTo(0,now);
  }
  if (ms<mS){
   o.dly=setTimeout(function(){ o.animate(f,t,srt,mS,i); },10);
  }
  else {
   window.scrollTo(0,t);
  }
 },

 pos:function(obj){
  var rtn=0;
  while(obj){
   rtn+=obj.offsetTop;
   obj=obj.offsetParent;
  }
  return rtn;
 },

 addevt:function(o,t,f,p){
  var oop=this;
  if (o.addEventListener) o.addEventListener(t,function(e){ return oop[f](e,p);}, false);
  else if (o.attachEvent) o.attachEvent('on'+t,function(e){ return oop[f](e,p); });
 }


}


/*]]>*/
</script>
<script type="text/javascript">
/*<![CDATA[*/

function Init(){
 new zxcScrollTo({
  AnchorClass:'anchor',
  ScrollDuration:1000,
  ScrollHold:4000
 });
}

if (window.addEventListener){
 window.addEventListener('load',Init, false);
}
else if (window.attachEvent){
 window.attachEvent('onload',Init);
}

/*]]>*/
</script>

</head>

<body>

<div class="anchor" ></div>
<div class="anchor" style="background-Color:blue;" ></div>
<div class="anchor" style="background-Color:green;" ></div>

</body>

</html>
__________________
Vic

God Loves You and will never love you less.

http://www.vicsjavascripts.org.uk/

If my post has been useful please donate to http://www.operationsmile.org.uk/
vwphillips is offline   Reply With Quote
Reply

Bookmarks

Tags
scrollto

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 05:55 AM.


Advertisement
Log in to turn off these ads.