| vwphillips |
10-26-2012 12:27 PM |
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>
|