Results 1 to 3 of 3

Thread: Change window offsett to element offset in jquery scroll to top control?

  1. #1
    Join Date
    Jan 2012
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Change window offsett to element offset in jquery scroll to top control?

    1) Script Title: jQuery Scroll to Top Control

    2) Script URL (on DD): http://www.dynamicdrive.com/dynamicindex3/scrolltop.htm

    3) Describe problem: I'm hoping since the rules for scripts says we can change things to alter our needs if we don't remove the credit to DD. I have minimal knowledge of js but can someone explain how to change the offset from the window to a div element? Since the people who view the site I'm using will have different screen resolutions and the scroll image may overlap over links I'm hoping to have it in a particular area.

    ie. Within the HTML page is a an elemant which I've named container which is basically a frame. Hope that makes sense thank you ahead of time!

  2. #2
    Join Date
    Dec 2008
    Location
    Portsmouth, UK
    Posts
    1,891
    Thanks
    2
    Thanked 441 Times in 435 Posts

    Default

    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>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
    <script type="text/javascript">
    /*<![CDATA[*/
    
    //** 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://www.dynamicdrive.com/dynamicindex3/up.png" style="width:48px; height:48px" />', //HTML for control, which is auto wrapped in DIV w/ ID="topcontrol"
    	controlattrs: {offsetx:305, 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
    	anchorelement: 'tst', // the ID name of the x anchor element
    
    	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),a=document.getElementById(anchorelement);
    		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({ top:controly+'px'})
            if (!a){
             this.$control.css({ left:controlx+'px'})
            }
    	},
    
    	togglecontrol:function(){
    		var scrolltop=jQuery(window).scrollTop(),a=document.getElementById(this.anchorelement);
            if (a){
             document.getElementById('topcontrol').style.left=this.pos(a)[0]+this.controlattrs.offsetx+'px';
            }
    		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
    		}
    	},
    
     pos:function(obj){
      var rtn=[0,0];
      while(obj){
       rtn[0]+=obj.offsetLeft;
       rtn[1]+=obj.offsetTop;
       obj=obj.offsetParent;
      }
      return rtn;
     },
    
    	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()/*]]>*/
    </script>
    </head>
    
    <body>
    <div id="tst" style="position:absolute;left:200px;top:200px;height:200px;width:200px;border:solid red 1px;" ></div>
    <div style="height:3000px;" ></div>
    </body>
    
    </html>
    Vic
    God Loves You and will never love you less.
    http://www.vicsjavascripts.org/Home.htm
    If my post has been useful please donate to http://www.operationsmile.org.uk/

  3. #3
    Join Date
    Jan 2012
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Thank you so much that worked beautifully!!!

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •