Results 1 to 4 of 4

Thread: Animated Collapse Help

  1. #1
    Join Date
    Jun 2007
    Posts
    18
    Thanks
    2
    Thanked 1 Time in 1 Post

    Question Animated Collapse Help

    Animated Collapse

    http://dynamicdrive.com/dynamicindex...edcollapse.htm

    I am making a website for my mums interior design buisness, and she wants a menu, that opens up like the animated collapse example.. But she wants it to open from left to right.... can someone please edit the script for me and post it here....if it is possible, if not can someone point me to something simmilar...
    Thanks Vinny.
    Last edited by vinny.benson; 04-13-2008 at 11:02 PM.

  2. The Following User Says Thank You to vinny.benson For This Useful Post:

    :2fast2good (04-15-2008)

  3. #2
    Join Date
    Jan 2008
    Posts
    4,168
    Thanks
    28
    Thanked 628 Times in 624 Posts
    Blog Entries
    1

    Default

    Try making 'animatedcollapse.js' this:
    Code:
    //Animated Collapsible DIV- Author: Dynamic Drive (http://www.dynamicdrive.com)
    //Last updated Aug 1st, 07'. Fixed bug with "block" parameter not working when persist is enabled
    //Updated June 27th, 07'. Added ability for a DIV to be initially expanded.
    
    var uniquepageid=window.location.href.replace("http://"+window.location.hostname, "").replace(/^\//, "") //get current page path and name, used to uniquely identify this page for persistence feature
    
    function animatedcollapse(divId, animatetime, persistexpand, initstate){
    	this.divId=divId
    	this.divObj=document.getElementById(divId)
    	this.divObj.style.overflow="hidden"
    	this.timelength=animatetime
    	this.initstate=(typeof initstate!="undefined" && initstate=="block")? "block" : "contract"
    	this.isExpanded=animatedcollapse.getCookie(uniquepageid+"-"+divId) //"yes" or "no", based on cookie value
    	this.contentwidth=parseInt(this.divObj.style.width)
    	var thisobj=this
    	if (isNaN(this.contentwidth)){ //if no CSS "width" attribute explicitly defined, get DIV's width on window.load
    		animatedcollapse.dotask(window, function(){thisobj._getwidth(persistexpand)}, "load")
    		if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes" && this.isExpanded!="") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
    			this.divObj.style.visibility="hidden" //hide content (versus collapse) until we can get its width
    	}
    	else if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes" && this.isExpanded!="") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
    		this.divObj.style.width=0 //just collapse content if CSS "width" attribute available
    	if (persistexpand)
    		animatedcollapse.dotask(window, function(){animatedcollapse.setCookie(uniquepageid+"-"+thisobj.divId, thisobj.isExpanded)}, "unload")
    }
    
    animatedcollapse.prototype._getwidth=function(persistexpand){
    	this.contentwidth=this.divObj.offsetwidth
    	if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes"){ //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
    		this.divObj.style.width=0 //collapse content
    		this.divObj.style.visibility="visible"
    	}
    	else //else if persistence is enabled AND this content should be expanded, define its CSS width value so slideup() has something to work with
    		this.divObj.style.width=this.contentwidth+"px"
    }
    
    
    animatedcollapse.prototype._slideengine=function(direction){
    	var elapsed=new Date().getTime()-this.startTime //get time animation has run
    	var thisobj=this
    	if (elapsed<this.timelength){ //if time run is less than specified length
    		var distancepercent=(direction=="down")? animatedcollapse.curveincrement(elapsed/this.timelength) : 1-animatedcollapse.curveincrement(elapsed/this.timelength)
    	this.divObj.style.width=distancepercent * this.contentwidth +"px"
    	this.runtimer=setTimeout(function(){thisobj._slideengine(direction)}, 10)
    	}
    	else{ //if animation finished
    		this.divObj.style.width=(direction=="down")? this.contentwidth+"px" : 0
    		this.isExpanded=(direction=="down")? "yes" : "no" //remember whether content is expanded or not
    		this.runtimer=null
    	}
    }
    
    
    animatedcollapse.prototype.slidedown=function(){
    	if (typeof this.runtimer=="undefined" || this.runtimer==null){ //if animation isn't already running or has stopped running
    		if (isNaN(this.contentwidth)) //if content width not available yet (until window.onload)
    			alert("Please wait until document has fully loaded then click again")
    		else if (parseInt(this.divObj.style.width)==0){ //if content is collapsed
    			this.startTime=new Date().getTime() //Set animation start time
    			this._slideengine("down")
    		}
    	}
    }
    
    animatedcollapse.prototype.slideup=function(){
    	if (typeof this.runtimer=="undefined" || this.runtimer==null){ //if animation isn't already running or has stopped running
    		if (isNaN(this.contentwidth)) //if content width not available yet (until window.onload)
    			alert("Please wait until document has fully loaded then click again")
    		else if (parseInt(this.divObj.style.width)==this.contentwidth){ //if content is expanded
    			this.startTime=new Date().getTime()
    			this._slideengine("up")
    		}
    	}
    }
    
    animatedcollapse.prototype.slideit=function(){
    	if (isNaN(this.contentwidth)) //if content width not available yet (until window.onload)
    		alert("Please wait until document has fully loaded then click again")
    	else if (parseInt(this.divObj.style.width)==0)
    		this.slidedown()
    	else if (parseInt(this.divObj.style.width)==this.contentwidth)
    		this.slideup()
    }
    
    // -------------------------------------------------------------------
    // A few utility functions below:
    // -------------------------------------------------------------------
    
    animatedcollapse.curveincrement=function(percent){
    	return (1-Math.cos(percent*Math.PI)) / 2 //return cos curve based value from a percentage input
    }
    
    
    animatedcollapse.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
    	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
    	if (target.addEventListener)
    		target.addEventListener(tasktype, functionref, false)
    	else if (target.attachEvent)
    		target.attachEvent(tasktype, functionref)
    }
    
    animatedcollapse.getCookie=function(Name){ 
    	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
    	if (document.cookie.match(re)) //if cookie found
    		return document.cookie.match(re)[0].split("=")[1] //return its value
    	return ""
    }
    
    animatedcollapse.setCookie=function(name, value){
    		document.cookie = name+"="+value
    }
    Jeremy | jfein.net

  4. The Following User Says Thank You to Nile For This Useful Post:

    vinny.benson (04-14-2008)

  5. #3
    Join Date
    Jun 2007
    Posts
    18
    Thanks
    2
    Thanked 1 Time in 1 Post

    Default

    Thanks Nile, i actually tried that but it didn't work...

  6. #4
    Join Date
    Jan 2008
    Posts
    4,168
    Thanks
    28
    Thanked 628 Times in 624 Posts
    Blog Entries
    1

    Default

    It worked for me, what browser are you using?
    Jeremy | jfein.net

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
  •