Results 1 to 3 of 3

Thread: Swapping image during scroll up

  1. #1
    Join Date
    Jun 2011
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Thumbs up Swapping image during scroll up

    1) Script Title: Need help swapping image during scroll up

    2) Script URL (on DD): scroll to top

    3) Describe problem: Hello there! I am pretty new to all of this, so I think my issue is an easy one to be solved.

    When you click the image, I would like to swap the image with a new one while it scrolls to the top.

    And then basically refresh back to original if they were to scroll down again. (If this needs to be specified)

    Pretty simple and straight forward. If I need to be more specific please ask.
    Thank you!

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

    Default

    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 id="top" 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"
        upimg:'http://www.dynamicdrive.com/dynamicindex3/up.png',
        altimg:'http://www.vicsjavascripts.org.uk/StdImages/One.gif',
    	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
         document.getElementById('top').src=this.altimg;
        	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])
                document.getElementById('top').src=this.upimg;
     			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()
    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
    Jun 2011
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Hey thanks Vic!

    I ended up working on this with a friend Friday night and found a solution that I didn't have time to post till now.
    Check it out and let me know what you think:

    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:1500, fadeduration:[500, 200]},
    	controlHTML: '<img src="stylesheets/scrolltop/up.png" style="width:56px; height:104px" />', //HTML for control, which is auto wrapped in DIV w/ ID="topcontrol"
    	controlattrs: {offsetx:10, offsety:10}, //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
    		if(!this.scrolling){
    			this.scrolling = true;
    			this.$body.animate({scrollTop: dest}, this.setting.scrollduration, function(){scrolltotop.scrolling = false;});
    			$("#topcontrol img").attr("src", "stylesheets/scrolltop/up_active.png");
    			
    		} else {
    			this.scrolling = false;
    			this.$body.stop();
    		}
    
    	},
    	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;
    			$("#topcontrol img").attr("src", "stylesheets/scrolltop/up.png");
    		}
    		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()
    Kevin

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
  •