Enjoy an ad free experience by logging in. Not a member yet?
Register .
10-26-2012, 09:06 AM
PM User |
#1
New to the CF scene
Join Date: Sep 2011
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
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
10-26-2012, 12:27 PM
PM User |
#2
Senior Coder
Join Date: Mar 2005
Location: Portsmouth UK
Posts: 4,355
Thanks: 3
Thanked 458 Times in 445 Posts
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>
Jump To Top of Thread
Thread Tools
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
HTML code is Off
All times are GMT +1. The time now is 05:55 AM .
Advertisement
Log in to turn off these ads.