You are on page 1of 2

//** jQuery Scroll to Top Control script- (c) I made this script myself (Kyle Mo

nk) and it is hosted on my personal site so would appreciate if you followed my


blog at kylemonk.tumblr.com if you use it or for details on how to change the lo
cation.
//** Graphic originally from tumbler dashboard, for details on how to change gra
phic colour, contact me at kylemonk.tumblr.com
//** v1.1 (April 7th, 10'):
//** 1) Adds ability to scroll to an absolute position (from top of page) or spe
cific element on the page instead.
//** 2) Fixes scroll animation not working in Opera.
var scrolltotop={
//startline: Integer. Number of pixels from top of doc scrollbar is scro
lled before showing control
//scrollto: Keyword (Integer, or "Scroll_to_Element_ID"). How far to scr
oll document up when control is clicked on (0=top).
setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration:
[500, 100]},
controlHTML: '<img src="http://media.tumblr.com/tumblr_m2cv8riIpn1r43b17
.png" style="filter:alpha(opacity=70); -moz-opacity:0.7;"/>', //HTML for control
, which is auto wrapped in DIV w/ ID="topcontrol"
controlattrs: {offsetx:35, offsety:60}, //offset of control relative to
right/ bottom of window corner
anchorkeyword: '#top', //Enter href value of HTML anchors on the page th
at should also act as "Scroll Up" links
state: {isvisible:false, shouldvisible:false},
scrollup:function(){
if (!this.cssfixedsupport) //if control is positioned using Java
Script
this.$control.css({opacity:0}) //hide control immediatel
y after clicking it
var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : p
arseInt(this.setting.scrollto)
if (typeof dest=="string" && jQuery('#'+dest).length==1) //check
element set by string exists
dest=jQuery('#'+dest).offset().top
else
dest=0
this.$body.animate({scrollTop: dest}, this.setting.scrollduratio
n);
},
keepfixed:function(){
var $window=jQuery(window)
var controlx=$window.scrollLeft() + $window.width() - this.$cont
rol.width() - this.controlattrs.offsetx
var controly=$window.scrollTop() + $window.height() - this.$cont
rol.height() - this.controlattrs.offsety
this.$control.css({left:controlx+'px', top:controly+'px'})
},
togglecontrol:function(){
var scrolltop=jQuery(window).scrollTop()
if (!this.cssfixedsupport)
this.keepfixed()
this.state.shouldvisible=(scrolltop>=this.setting.startline)? tr
ue : false
if (this.state.shouldvisible && !this.state.isvisible){
this.$control.stop().animate({opacity:1}, this.setting.f
adeduration[0])
this.state.isvisible=true
}
else if (this.state.shouldvisible==false && this.state.isvisible
){
this.$control.stop().animate({opacity:0}, this.setting.f
adeduration[1])
this.state.isvisible=false
}
},
init:function(){
jQuery(document).ready(function($){
var mainobj=scrolltotop
var iebrws=document.all
mainobj.cssfixedsupport=!iebrws || iebrws && document.co
mpatMode=="CSS1Compat" && window.XMLHttpRequest //not IE or IE7+ browsers in sta
ndards mode
mainobj.$body=(window.opera)? (document.compatMode=="CSS
1Compat"? $('html') : $('body')) : $('html,body')
mainobj.$control=$('<div id="topcontrol">'+mainobj.contr
olHTML+'</div>')
.css({position:mainobj.cssfixedsupport? 'fixed'
: 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.of
fsetx, opacity:0, cursor:'pointer'})
.attr({title:'Scroll To Top'})
.click(function(){mainobj.scrollup(); return fal
se})
.appendTo('body')
if (document.all && !window.XMLHttpRequest && mainobj.$c
ontrol.text()!='') //loose check for IE6 and below, plus whether control contain
s any text
mainobj.$control.css({width:mainobj.$control.wid
th()}) //IE6- seems to require an explicit width on a DIV containing text
mainobj.togglecontrol()
$('a[href="' + mainobj.anchorkeyword +'"]').click(functi
on(){
mainobj.scrollup()
return false
})
$(window).bind('scroll resize', function(e){
mainobj.togglecontrol()
})
})
}
}
scrolltotop.init()

You might also like