The forum of the forums
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Scroll to Top

3 posters

Go down

Solved Scroll to Top

Post by Viserys Fri 22 Feb 2013, 14:16

Looking to implement a scrolling to "top button".

Example: http://www.animeinspirations.com/

My forum: http://forums.animeinspirations.com/

Not sure what I am doing wrong, if I am implementing the code incorrectly or if the javascript is written wrong.

Board Version: phpBB3

Code:
//** jQuery Scroll to Top Control script- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
//** Available/ usage terms at http://www.dynamicdrive.com (March 30th, 09')
//** v1.1 (April 7th, 09'):
//** 1) Adds ability to scroll to an absolute position (from top of page) or specific 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 scrolled before showing control
   //scrollto: Keyword (Integer, or "Scroll_to_Element_ID"). How far to scroll document up when control is clicked on (0=top).
   setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration:[500, 100]},
   controlHTML: '<img src="http://4.bp.blogspot.com/-4EhTTBYpH7I/UQxorsZeTGI/AAAAAAAAChc/fFJupss47cA/s1600/jquery_scroll_icon.png" style="width:48px; height:48px" />', //HTML for control, which is auto wrapped in DIV w/ ID="topcontrol"
   controlattrs: {offsetx:5, offsety:5}, //offset of control relative to right/ bottom of window corner
   anchorkeyword: '#top', //Enter href value of HTML anchors on the page that should also act as "Scroll Up" links

   state: {isvisible:false, shouldvisible:false},

   scrollup:function(){
      if (!this.cssfixedsupport) //if control is positioned using JavaScript
         this.$control.css({opacity:0}) //hide control immediately after clicking it
      var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : parseInt(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.scrollduration);
   },

   keepfixed:function(){
      var $window=jQuery(window)
      var controlx=$window.scrollLeft() + $window.width() - this.$control.width() - this.controlattrs.offsetx
      var controly=$window.scrollTop() + $window.height() - this.$control.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)? true : false
      if (this.state.shouldvisible && !this.state.isvisible){
         this.$control.stop().animate({opacity:1}, this.setting.fadeduration[0])
         this.state.isvisible=true
      }
      else if (this.state.shouldvisible==false && this.state.isvisible){
         this.$control.stop().animate({opacity:0}, this.setting.fadeduration[1])
         this.state.isvisible=false
      }
   },
   
   init:function(){
      jQuery(document).ready(function($){
         var mainobj=scrolltotop
         var iebrws=document.all
         mainobj.cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest //not IE or IE7+ browsers in standards mode
         mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body')
         mainobj.$control=$('<div id="topcontrol">'+mainobj.controlHTML+'</div>')
            .css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'})
            .attr({title:'Scroll Back to Top'})
            .click(function(){mainobj.scrollup(); return false})
            .appendTo('body')
         if (document.all && !window.XMLHttpRequest && mainobj.$control.text()!='') //loose check for IE6 and below, plus whether control contains any text
            mainobj.$control.css({width:mainobj.$control.width()}) //IE6- seems to require an explicit width on a DIV containing text
         mainobj.togglecontrol()
         $('a[href="' + mainobj.anchorkeyword +'"]').click(function(){
            mainobj.scrollup()
            return false
         })
         $(window).bind('scroll resize', function(e){
            mainobj.togglecontrol()
         })
      })
   }
}

scrolltotop.init()


I don't necessarily need the javascript, but its probably required to have the floating image that scrolls with the page. Additionally, if someone has a fix to implement a static scroll to top (basic click this link, sends you to top of page kind of deal) that can be attached to an image (near the footer for example) that would work as well.

I realize this is a tricky one, appreciate any support.

Works. Much appreciated.


Last edited by Viserys on Sat 23 Feb 2013, 00:48; edited 1 time in total
Viserys
Viserys
New Member

Male Posts : 4
Reputation : 1
Language : English

http://forums.animeinspirations.com/

Back to top Go down

Solved Re: Scroll to Top

Post by Sir Chivas™ Fri 22 Feb 2013, 14:26

Hi,

I think this would be easier and cleaner.
http://www.csshelp.net/t45-how-to-put-scroll-to-top-with-jquery-on-your-forum

Regards,
Sir Chivas.
Sir Chivas™
Sir Chivas™
Helper
Helper

Male Posts : 6980
Reputation : 457
Language : EN, FR, ES
Location : || CSS || HTML || Graphics Designs || Support ||

https://aforums.org

Back to top Go down

Solved Re: Scroll to Top

Post by Jophy Sat 23 Feb 2013, 10:59

Since this was marked solved...

Topic Solved & Locked
Jophy
Jophy
ForumGuru

Male Posts : 17922
Reputation : 836
Language : English
Location : Somewhere

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum