Page 1 of 2 12 LastLast
Results 1 to 10 of 15

Thread: Looking for script for continuous step carousel

  1. #1
    Join Date
    Apr 2010
    Location
    Scotland
    Posts
    2
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Default Looking for script for continuous step carousel

    Hello, I am looking for a script to create a continuous step carousel, similar to the carousel on the hootsuite.com website. I have seen a script at http://www.dynamicdrive.com/dynamici...epcarousel.htm but I want the panels to rotate continuously. I have never done anything like this before and hopefully it's not beyond me. Any help or suggestions would be greatly appreciated. Thanks in advance.

  2. #2
    Join Date
    Jul 2009
    Location
    Binus University
    Posts
    472
    Thanks
    78
    Thanked 21 Times in 21 Posts

    Default

    _____________________

    David Demetrius // davejob
    _____________________

  3. The Following User Says Thank You to davelf For This Useful Post:

    MacGirl (04-08-2010)

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

    Default

    in principle

    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>
    <style type="text/css">
    /*<![CDATA[*/
    #tst {
      position:relative;overflow:hidden;left:100px;width:400px;height:200px;border:solid black 1px;
    }
    
    .slide {
      position:absolute;left:0px;top:0px;width:1100px;
    }
    
    .slide .frame{
      margin-Left:10px;float:left;
    }
    /*]]>*/
    </style>
    <script type="text/javascript">
    // Animate (11-January-2010)
    // by Vic Phillips http://www.vicsjavascripts.org.uk
    
    // To progressively change the Left, Top, Width, Height or Opacity of an element over a specified period of time.
    // With the ability to scale the effect time on specified minimum/maximum values
    // and with three types of progression 'sin' and 'cos' and liner.
    
    // **** Application Notes
    
    // **** The HTML Code
    //
    // when moving an element the inline or class rule style position of the element should be assigned as
    // 'position:relative;' or 'position:absolute;'
    //
    // The element would normally be assigned a unique ID name.
    //
    
    // **** Initialising the Script.
    //
    // The script is initialised by assigning an instance of the script to a variable.
    // e.g A = new zxcAnimate('left','id1')
    // where:
    //  A           = a global variable                                                               (variable)
    //  parameter 0 = the mode(see Note 1).                                                           (string)
    //  parameter 1 = the unique ID name or element object.                                           (string or element object)
    //  parameter 1 = the initial value.                                                              (digits, default = 0)
    
    // **** Executing the Effect
    //
    // The effect is executed by an event call to function 'A.animate(10,800 ,5000,[10,800]);'
    // where:
    //  A           = the global referencing the script instance.                                 (variable)
    //  parameter 0 = the start value.                                                            (digits, for opacity minimum 0, maximum 100)
    //  parameter 1 = the finish value.                                                           (digits, for opacity minimum 0, maximum 100)
    //  parameter 2 =  period of time between the start and finish of the effect in milliseconds. (digits or defaults to previous or 0(on first call) milliSeconds)
    //  parameter 3 = (optional) to scale the effect time on a specified minimum/maximum.         (array, see Note 3)
    //                 field 0 the minimum value. (digits)
    //                 field 1 the maximum value. (digits)
    //  parameter 3 = (optional) the type of progression, 'sin', 'cos' or 'liner'.                (string, default = 'liner')
    //                 'sin' progression starts fast and ends slow.
    //                 'cos' progression starts slow and ends fast.
    //
    //  Note 1:  Examples modes: 'left', 'top', 'width', 'height', 'opacity.
    //  Note 2:  The default units(excepting opacity) are 'px'.
    //           For hyphenated modes, the first character after the hyphen must be upper case, all others lower case.
    //  Note 3:  The scale is of particular use when re-calling the effect
    //           in mid progression to retain an constant rate of progression.
    //  Note 4:  The current effect value is recorded in A.data[0].
    //  Note 5:  A function may be called on completion of the effect by assigning the function
    //           to the animator intance property .Complete.
    //           e.g. [instance].Complete=function(){ alert(this.data[0]); };
    //
    
    
    
    // **** Functional Code(1.58K) - NO NEED to Change
    
    function zxcAnimate(mde,obj,srt){
     this.to=null;
     this.obj=typeof(obj)=='object'?obj:document.getElementById(obj);
     this.mde=mde.replace(/\W/g,'');
     this.data=[srt||0];
     return this;
    }
    
    zxcAnimate.prototype.animate=function(srt,fin,ms,scale,c){
     clearTimeout(this.to);
     this.time=ms||this.time||0;
     this.neg=srt<0||fin<0;
     this.data=[srt,srt,fin];
     this.mS=this.time*(!scale?1:Math.abs((fin-srt)/(scale[1]-scale[0])));
     this.c=typeof(c)=='string'?c.charAt(0).toLowerCase():this.c?this.c:'';
     this.inc=Math.PI/(2*this.mS);
     this.srttime=new Date().getTime();
     this.cng();
    }
    
    zxcAnimate.prototype.cng=function(){
     var oop=this,ms=new Date().getTime()-this.srttime;
     this.data[0]=(this.c=='s')?(this.data[2]-this.data[1])*Math.sin(this.inc*ms)+this.data[1]:(this.c=='c')?this.data[2]-(this.data[2]-this.data[1])*Math.cos(this.inc*ms):(this.data[2]-this.data[1])/this.mS*ms+this.data[1];
     this.apply();
     if (ms<this.mS) this.to=setTimeout(function(){oop.cng()},10);
     else {
      this.data[0]=this.data[2];
      this.apply();
      if (this.Complete) this.Complete(this);
     }
    }
    
    zxcAnimate.prototype.apply=function(){
     if (isFinite(this.data[0])){
      if (this.data[0]<0&&!this.neg) this.data[0]=0;
      if (this.mde!='opacity') this.obj.style[this.mde]=Math.floor(this.data[0])+'px';
      else zxcOpacity(this.obj,this.data[0]);
     }
    }
    
    function zxcOpacity(obj,opc){
     if (opc<0||opc>100) return;
     obj.style.filter='alpha(opacity='+opc+')';
     obj.style.opacity=obj.style.MozOpacity=obj.style.KhtmlOpacity=opc/100-.001;
    }
    
    
    </script>
    
    
    </head>
    
    <body>
    <div id="tst" >
     <div class="slide" >
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/fruits.jpg" /></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/cave.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/pool.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/autumn.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/dog.jpg" /></div>
     </div>
    </div>
    
    <script> vic=0; </script>
    <form name=Show id=Show style="position:absolute;visibility:visible;top:420px;left:0px;" >
    <input size=100 name=Show0 >
    <input size=10 name=Show1 >
    <input size=10 name=Show2 >
    <input size=10 name=Show3 >
    <input size=10 name=Show4 >
    <input size=10 name=Show5 >
    <input size=10 name=Show6 >
    <input size=10 name=Show7 >
    <input size=10 name=Show8 >
    <input size=10 name=Show9 ><br>
    <textarea name=TA rows=1 cols=100 ></textarea>
    </form>
    <input type="button" name="" value="Rotate" onclick="C.Rotate(-1);"/>
    <input type="button" name="" value="Rotate" onclick="C.Rotate(1);"/>
    <script type="text/javascript">
    /*<![CDATA[*/
    
    function zxcCC(o){
     var w=o.Width;
     this.ms=o.Duration||1000;
     this.moveby=o.MoveBy;
     var p=document.getElementById(o.ID);
     var slide=p.getElementsByTagName('DIV')[0];
     this.slide=[slide];
     for (var lft,z0=0;z0<3;z0++){
      lft=w*z0-w;
      if (z0>0){
       this.slide[z0]=slide.cloneNode(true);
       p.appendChild(this.slide[z0]);
      }
      this.slide[z0].style.width=w+'px';
      this.slide[z0].style.left=lft+'px';
      this.slide[z0]=new zxcAnimate('left',this.slide[z0],lft);
      this.slide[z0].run=true;
      this.slide[z0].w=w;
      this.slide[z0].Complete=function(){
        var ud=this.data[1]>this.data[2]
        if ((ud&&this.data[0]<-this.w)||(!ud&&this.data[0]>this.w)){
         this.data[0]+=this.w*3*(ud?1:-1);
        }
        this.run=true;
       }
     }
    }
    
    zxcCC.prototype.Rotate=function(ud){
     if (this.slide[0].run){
      this.slide[0].run=false;
      for (var z0=0;z0<this.slide.length;z0++){
       this.slide[z0].animate(this.slide[z0].data[0],this.slide[z0].data[0]+this.moveby*(ud>0?1:-1),this.ms);
      }
     }
    }
    
    
    var C=new zxcCC({
     ID:'tst',
     Width:1300,
     MoveBy:260,
     Duration:1000
    });
    /*]]>*/
    </script>
    </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/

  5. The Following User Says Thank You to vwphillips For This Useful Post:

    MacGirl (04-08-2010)

  6. #4
    Join Date
    Apr 2010
    Location
    Scotland
    Posts
    2
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Default

    Thank you so much David and Vic.

  7. #5
    Join Date
    Mar 2010
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Vic,
    do you know how to add the auto rotation to your code ?
    thank you !

  8. #6
    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>
    <style type="text/css">
    /*<![CDATA[*/
    #tst {
      position:relative;overflow:hidden;left:100px;width:800px;height:200px;border:solid black 1px;
    }
    
    .slide {
      position:absolute;left:0px;top:0px;width:1300px;background-Color:#FFCC66;border:solid red 0px;
    }
    
    .slide .frame{
      width:130px;height:100px;margin-Left:0px;float:left;
    }
    
    .slide .frame IMG{
      width:120px;height:100px;
    }
    
    /*]]>*/
    </style>
    <script type="text/javascript">
    // Animate (11-January-2010)
    // by Vic Phillips http://www.vicsjavascripts.org.uk
    
    // To progressively change the Left, Top, Width, Height or Opacity of an element over a specified period of time.
    // With the ability to scale the effect time on specified minimum/maximum values
    // and with three types of progression 'sin' and 'cos' and liner.
    
    // **** Application Notes
    
    // **** The HTML Code
    //
    // when moving an element the inline or class rule style position of the element should be assigned as
    // 'position:relative;' or 'position:absolute;'
    //
    // The element would normally be assigned a unique ID name.
    //
    
    // **** Initialising the Script.
    //
    // The script is initialised by assigning an instance of the script to a variable.
    // e.g A = new zxcAnimate('left','id1')
    // where:
    //  A           = a global variable                                                               (variable)
    //  parameter 0 = the mode(see Note 1).                                                           (string)
    //  parameter 1 = the unique ID name or element object.                                           (string or element object)
    //  parameter 1 = the initial value.                                                              (digits, default = 0)
    
    // **** Executing the Effect
    //
    // The effect is executed by an event call to function 'A.animate(10,800 ,5000,[10,800]);'
    // where:
    //  A           = the global referencing the script instance.                                 (variable)
    //  parameter 0 = the start value.                                                            (digits, for opacity minimum 0, maximum 100)
    //  parameter 1 = the finish value.                                                           (digits, for opacity minimum 0, maximum 100)
    //  parameter 2 =  period of time between the start and finish of the effect in milliseconds. (digits or defaults to previous or 0(on first call) milliSeconds)
    //  parameter 3 = (optional) to scale the effect time on a specified minimum/maximum.         (array, see Note 3)
    //                 field 0 the minimum value. (digits)
    //                 field 1 the maximum value. (digits)
    //  parameter 3 = (optional) the type of progression, 'sin', 'cos' or 'liner'.                (string, default = 'liner')
    //                 'sin' progression starts fast and ends slow.
    //                 'cos' progression starts slow and ends fast.
    //
    //  Note 1:  Examples modes: 'left', 'top', 'width', 'height', 'opacity.
    //  Note 2:  The default units(excepting opacity) are 'px'.
    //           For hyphenated modes, the first character after the hyphen must be upper case, all others lower case.
    //  Note 3:  The scale is of particular use when re-calling the effect
    //           in mid progression to retain an constant rate of progression.
    //  Note 4:  The current effect value is recorded in A.data[0].
    //  Note 5:  A function may be called on completion of the effect by assigning the function
    //           to the animator intance property .Complete.
    //           e.g. [instance].Complete=function(){ alert(this.data[0]); };
    //
    
    
    
    // **** Functional Code(1.58K) - NO NEED to Change
    
    function zxcAnimate(mde,obj,srt){
     this.to=null;
     this.obj=typeof(obj)=='object'?obj:document.getElementById(obj);
     this.mde=mde.replace(/\W/g,'');
     this.data=[srt||0];
     return this;
    }
    
    zxcAnimate.prototype.animate=function(srt,fin,ms,scale,c){
     clearTimeout(this.to);
     this.time=ms||this.time||0;
     this.neg=srt<0||fin<0;
     this.data=[srt,srt,fin];
     this.mS=this.time*(!scale?1:Math.abs((fin-srt)/(scale[1]-scale[0])));
     this.c=typeof(c)=='string'?c.charAt(0).toLowerCase():this.c?this.c:'';
     this.inc=Math.PI/(2*this.mS);
     this.srttime=new Date().getTime();
     this.cng();
    }
    
    zxcAnimate.prototype.cng=function(){
     var oop=this,ms=new Date().getTime()-this.srttime;
     this.data[0]=(this.c=='s')?(this.data[2]-this.data[1])*Math.sin(this.inc*ms)+this.data[1]:(this.c=='c')?this.data[2]-(this.data[2]-this.data[1])*Math.cos(this.inc*ms):(this.data[2]-this.data[1])/this.mS*ms+this.data[1];
     this.apply();
     if (ms<this.mS) this.to=setTimeout(function(){oop.cng()},10);
     else {
      this.data[0]=this.data[2];
      this.apply();
      if (this.Complete) this.Complete(this);
     }
    }
    
    zxcAnimate.prototype.apply=function(){
     if (isFinite(this.data[0])){
      if (this.data[0]<0&&!this.neg) this.data[0]=0;
      if (this.mde!='opacity') this.obj.style[this.mde]=Math.floor(this.data[0])+'px';
      else zxcOpacity(this.obj,this.data[0]);
     }
    }
    
    function zxcOpacity(obj,opc){
     if (opc<0||opc>100) return;
     obj.style.filter='alpha(opacity='+opc+')';
     obj.style.opacity=obj.style.MozOpacity=obj.style.KhtmlOpacity=opc/100-.001;
    }
    
    
    </script>
    
    
    </head>
    
    <body>
    <div id="tst" >
     <div class="slide" >
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/fruits.jpg" /></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/cave.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/pool.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/autumn.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/dog.jpg" /></div>
     </div>
    </div>
    <input type="button" name="" value="GoTo 0" onclick="C.GoTo(0);"/>
    <input type="button" name="" value="GoTo 1" onclick="C.GoTo(1);"/>
    <input type="button" name="" value="GoTo 2" onclick="C.GoTo(2);"/>
    <input type="button" name="" value="GoTo 3" onclick="C.GoTo(3);"/>
    <input type="button" name="" value="GoTo 4" onclick="C.GoTo(4);"/>
    
    <input type="button" name="" value="< Rotate" onclick="C.Rotate(1);"/>
    <input type="button" name="" value="Auto" onclick="C.Auto(true);"/>
    <input type="button" name="" value="Auto Stop" onclick="C.Auto(false);"/>
    <input type="button" name="" value="Rotate  >" onclick="C.Rotate(-1);"/>
    <script type="text/javascript">
    /*<![CDATA[*/
    
    function zxcStepCarousel(o){
     var p=document.getElementById(o.ID);
     var slide=p.getElementsByTagName('DIV')[0];
     for (var clds=slide.childNodes,fst,lst,z0=0;z0<clds.length;z0++){
      if (clds[z0].nodeType==1){
        if (!fst){
         fst=clds[z0];
        }
        lst=clds[z0];
      }
     }
     this.moveby=o.MoveBy||fst.offsetLeft+fst.offsetWidth;
     var mde=o.Mode.charAt(0).toUpperCase()=='V'?['top','height','offsetTop','offsetHeight']:['left','width','offsetLeft','offsetWidth'];
     this.ms=o.Duration||1000;
     this.hold=o.Hold||this.ms*4;
     this.to=null;
     this.ud=o.Direction||-1;
     this.os=o.Offset||0;
     var wh=lst[mde[2]]+lst[mde[3]];
     this.slide=[slide];
     var nu=Math.floor(p[mde[3]]/wh)+3;
     for (var max,z1=0;z1<nu;z1++){
      max=wh*z1-wh+this.os;
      if (z1>0){
       this.slide[z1]=slide.cloneNode(true);
       p.appendChild(this.slide[z1]);
      }
      this.slide[z1].style[mde[1]]=wh+'px';
      this.slide[z1].style[mde[0]]=max+'px';
      this.slide[z1]=new zxcAnimate(mde[0],this.slide[z1],max);
      this.slide[z1].run=true;
      this.slide[z1].Complete=function(){ this.run=true; }
     }
     this.min=wh;
     this.max=max;
     this.lgth=this.slide.length;
     this.maxcnt=Math.round(this.min/this.moveby-1);
     this.cnt=0;
    //document.Show.Show0.value=this.maxcnt;
    }
    
    zxcStepCarousel.prototype.Rotate=function(ud){
     clearTimeout(this.to);
     if (this.slide[0].run){
      this.ud=ud||this.ud;
      this.slide[0].run=false;
      this.rotate(this.moveby*(this.ud<0?-1:1));
     }
    }
    
    zxcStepCarousel.prototype.GoTo=function(nu){
     clearTimeout(this.to);
     var goto=this.moveby*nu;
     if (this.slide[0].run&&goto<this.min){
      this.slide[0].run=false;
      for (var ary=[],z0=0;z0<this.slide.length;z0++){
       ary.push(this.slide[z0].data[0]+goto+this.os)
      }
      ary=ary.sort(function(a,b){ return Math.abs(a)-Math.abs(b); });
      this.rotate(ary[0]);
     }
    }
    
    zxcStepCarousel.prototype.rotate=function(moveby){
     this.cnt+=(moveby>0?1:-1);
     this.cnt=this.cnt<0?this.maxcnt:this.cnt>this.maxcnt?0:this.cnt;
     for (var z0=0;z0<this.lgth;z0++){
      if ((moveby>0&&this.slide[z0].data[0]<=-this.min)||(moveby<0&&this.slide[z0].data[0]>=this.max)){
       this.slide[z0].data[0]+=this.min*this.lgth*(moveby>0?1:-1);
      }
      this.slide[z0].animate(this.slide[z0].data[0],this.slide[z0].data[0]-moveby,this.ms);
     }
    }
    
    zxcStepCarousel.prototype.Auto=function(run){
     var oop=this;
     clearTimeout(this.to);
     if (run){
      this.Rotate();
      this.to=setTimeout(function(){ oop.Auto(true); },this.hold);
     }
    }
    
    
    
    var C=new zxcStepCarousel({
     Mode:'Horizontal',
     ID:'tst',
    // MoveBy:520,  // (optional) the distance to move each rotation.                      (digits, default = one frame)
     Offset:0,      // (optional) the left offset.                                         (digits, default = 0)
     Duration:1000, // (optional) the duration of each rotation in milli seconds.          (digits, default = 1000)
     Direction:1,   // (optional) -1 = rotate left, 1 = rotate right.                      (digits 1 or -1, default = -1)
     Hold:3000      // (optional) the dutation between each auto rotation in milliseconds. (digits, default = Duration*4)
    });
    
    C.Auto(true);
    /*]]>*/
    </script>
    </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/

  9. #7
    Join Date
    Mar 2010
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    very nice !
    thank you!

  10. #8
    Join Date
    Mar 2010
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    I try to make a margin between images (frame width:140px, instead of 130px), but the result is not good
    when I try with a 'margin-right:10px', I have the same problem

    I see that with your code there is a space between the images, but I don't understand how it works.

    thanks

    the css
    HTML Code:
    #tst {
      position:relative;
      overflow:hidden;
      left:100px;
      width:800px;
      height:200px;
      border:solid black 1px;
    }
    
    .slide {
      position:absolute;
      left:0px;top:0px;
      width:1300px;
      background-Color:#FFCC66;
      border:solid red 0px;
    }
    
    .slide .frame{
      width:140px;
      height:100px;
      margin-Left:0px;
      float:left;
    }
    
    .slide .frame IMG{
      width:120px;
      height:100px;
    }
    
    #leftnav {
    z-Index:50;
    position:absolute;
    left:-2px;
    top:52px;
    cursor:hand;
    cursor:pointer;
    }
    
    #rightnav {
    z-Index:50;
    position:absolute;
    left:40px;
    top:52px;
    cursor:hand;
    cursor:pointer;
    }
    HTML 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>
    <link rel="stylesheet" href="templates/rhuk_milkyway/css/vic.css" type="text/css" />
    
    <script type="text/javascript">
    // Animate (11-January-2010)
    // by Vic Phillips http://www.vicsjavascripts.org.uk
    
    // To progressively change the Left, Top, Width, Height or Opacity of an element over a specified period of time.
    // With the ability to scale the effect time on specified minimum/maximum values
    // and with three types of progression 'sin' and 'cos' and liner.
    
    // **** Application Notes
    
    // **** The HTML Code
    //
    // when moving an element the inline or class rule style position of the element should be assigned as
    // 'position:relative;' or 'position:absolute;'
    //
    // The element would normally be assigned a unique ID name.
    //
    
    // **** Initialising the Script.
    //
    // The script is initialised by assigning an instance of the script to a variable.
    // e.g A = new zxcAnimate('left','id1')
    // where:
    //  A           = a global variable                                                               (variable)
    //  parameter 0 = the mode(see Note 1).                                                           (string)
    //  parameter 1 = the unique ID name or element object.                                           (string or element object)
    //  parameter 1 = the initial value.                                                              (digits, default = 0)
    
    // **** Executing the Effect
    //
    // The effect is executed by an event call to function 'A.animate(10,800 ,5000,[10,800]);'
    // where:
    //  A           = the global referencing the script instance.                                 (variable)
    //  parameter 0 = the start value.                                                            (digits, for opacity minimum 0, maximum 100)
    //  parameter 1 = the finish value.                                                           (digits, for opacity minimum 0, maximum 100)
    //  parameter 2 =  period of time between the start and finish of the effect in milliseconds. (digits or defaults to previous or 0(on first call) milliSeconds)
    //  parameter 3 = (optional) to scale the effect time on a specified minimum/maximum.         (array, see Note 3)
    //                 field 0 the minimum value. (digits)
    //                 field 1 the maximum value. (digits)
    //  parameter 3 = (optional) the type of progression, 'sin', 'cos' or 'liner'.                (string, default = 'liner')
    //                 'sin' progression starts fast and ends slow.
    //                 'cos' progression starts slow and ends fast.
    //
    //  Note 1:  Examples modes: 'left', 'top', 'width', 'height', 'opacity.
    //  Note 2:  The default units(excepting opacity) are 'px'.
    //           For hyphenated modes, the first character after the hyphen must be upper case, all others lower case.
    //  Note 3:  The scale is of particular use when re-calling the effect
    //           in mid progression to retain an constant rate of progression.
    //  Note 4:  The current effect value is recorded in A.data[0].
    //  Note 5:  A function may be called on completion of the effect by assigning the function
    //           to the animator intance property .Complete.
    //           e.g. [instance].Complete=function(){ alert(this.data[0]); };
    //
    
    
    
    // **** Functional Code(1.58K) - NO NEED to Change
    
    function zxcAnimate(mde,obj,srt){
     this.to=null;
     this.obj=typeof(obj)=='object'?obj:document.getElementById(obj);
     this.mde=mde.replace(/\W/g,'');
     this.data=[srt||0];
     return this;
    }
    
    zxcAnimate.prototype.animate=function(srt,fin,ms,scale,c){
     clearTimeout(this.to);
     this.time=ms||this.time||0;
     this.neg=srt<0||fin<0;
     this.data=[srt,srt,fin];
     this.mS=this.time*(!scale?1:Math.abs((fin-srt)/(scale[1]-scale[0])));
     this.c=typeof(c)=='string'?c.charAt(0).toLowerCase():this.c?this.c:'';
     this.inc=Math.PI/(2*this.mS);
     this.srttime=new Date().getTime();
     this.cng();
    }
    
    zxcAnimate.prototype.cng=function(){
     var oop=this,ms=new Date().getTime()-this.srttime;
     this.data[0]=(this.c=='s')?(this.data[2]-this.data[1])*Math.sin(this.inc*ms)+this.data[1]:(this.c=='c')?this.data[2]-(this.data[2]-this.data[1])*Math.cos(this.inc*ms):(this.data[2]-this.data[1])/this.mS*ms+this.data[1];
     this.apply();
     if (ms<this.mS) this.to=setTimeout(function(){oop.cng()},10);
     else {
      this.data[0]=this.data[2];
      this.apply();
      if (this.Complete) this.Complete(this);
     }
    }
    
    zxcAnimate.prototype.apply=function(){
     if (isFinite(this.data[0])){
      if (this.data[0]<0&&!this.neg) this.data[0]=0;
      if (this.mde!='opacity') this.obj.style[this.mde]=Math.floor(this.data[0])+'px';
      else zxcOpacity(this.obj,this.data[0]);
     }
    }
    
    function zxcOpacity(obj,opc){
     if (opc<0||opc>100) return;
     obj.style.filter='alpha(opacity='+opc+')';
     obj.style.opacity=obj.style.MozOpacity=obj.style.KhtmlOpacity=opc/100-.001;
    }
    
    
    </script>
    
    
    </head>
    
    <body>
    <a href="javascript:;" onClick="C.Rotate(-1);">
    <img src="http://www.zwickert.fr/templates/rhuk_milkyway/images/gauche.png" border="0" id="leftnav"/></a>
    <div id="tst" >
     <div class="slide" >
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/fruits.jpg" /></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/cave.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/pool.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/autumn.jpg"/></div>
      <div class="frame" ><img src="http://www.dynamicdrive.com/dynamicindex4/dog.jpg" /></div>
     </div>
    </div>
    <a href="javascript:;" onClick="C.Rotate(1);">
    <img src="http://www.zwickert.fr/templates/rhuk_milkyway/images/droite.png" border="0" id="rightnav"/></a>
    
    <script type="text/javascript">
    /*<![CDATA[*/
    
    function zxcStepCarousel(o){
     var p=document.getElementById(o.ID);
     var slide=p.getElementsByTagName('DIV')[0];
     for (var clds=slide.childNodes,fst,lst,z0=0;z0<clds.length;z0++){
      if (clds[z0].nodeType==1){
        if (!fst){
         fst=clds[z0];
        }
        lst=clds[z0];
      }
     }
     this.moveby=o.MoveBy||fst.offsetLeft+fst.offsetWidth;
     var mde=o.Mode.charAt(0).toUpperCase()=='V'?['top','height','offsetTop','offsetHeight']:['left','width','offsetLeft','offsetWidth'];
     this.ms=o.Duration||1000;
     this.hold=o.Hold||this.ms*4;
     this.to=null;
     this.ud=o.Direction||-1;
     this.os=o.Offset||0;
     var wh=lst[mde[2]]+lst[mde[3]];
     this.slide=[slide];
     var nu=Math.floor(p[mde[3]]/wh)+3;
     for (var max,z1=0;z1<nu;z1++){
      max=wh*z1-wh+this.os;
      if (z1>0){
       this.slide[z1]=slide.cloneNode(true);
       p.appendChild(this.slide[z1]);
      }
      this.slide[z1].style[mde[1]]=wh+'px';
      this.slide[z1].style[mde[0]]=max+'px';
      this.slide[z1]=new zxcAnimate(mde[0],this.slide[z1],max);
      this.slide[z1].run=true;
      this.slide[z1].Complete=function(){ this.run=true; }
     }
     this.min=wh;
     this.max=max;
     this.lgth=this.slide.length;
     this.maxcnt=Math.round(this.min/this.moveby-1);
     this.cnt=0;
    //document.Show.Show0.value=this.maxcnt;
    }
    
    zxcStepCarousel.prototype.Rotate=function(ud){
     clearTimeout(this.to);
     if (this.slide[0].run){
      this.ud=ud||this.ud;
      this.slide[0].run=false;
      this.rotate(this.moveby*(this.ud<0?-1:1));
     }
    }
    
    zxcStepCarousel.prototype.GoTo=function(nu){
     clearTimeout(this.to);
     var goto=this.moveby*nu;
     if (this.slide[0].run&&goto<this.min){
      this.slide[0].run=false;
      for (var ary=[],z0=0;z0<this.slide.length;z0++){
       ary.push(this.slide[z0].data[0]+goto+this.os)
      }
      ary=ary.sort(function(a,b){ return Math.abs(a)-Math.abs(b); });
      this.rotate(ary[0]);
     }
    }
    
    zxcStepCarousel.prototype.rotate=function(moveby){
     this.cnt+=(moveby>0?1:-1);
     this.cnt=this.cnt<0?this.maxcnt:this.cnt>this.maxcnt?0:this.cnt;
     for (var z0=0;z0<this.lgth;z0++){
      if ((moveby>0&&this.slide[z0].data[0]<=-this.min)||(moveby<0&&this.slide[z0].data[0]>=this.max)){
       this.slide[z0].data[0]+=this.min*this.lgth*(moveby>0?1:-1);
      }
      this.slide[z0].animate(this.slide[z0].data[0],this.slide[z0].data[0]-moveby,this.ms);
     }
    }
    
    zxcStepCarousel.prototype.Auto=function(run){
     var oop=this;
     clearTimeout(this.to);
     if (run){
      this.Rotate();
      this.to=setTimeout(function(){ oop.Auto(true); },this.hold);
     }
    }
    
    
    
    var C=new zxcStepCarousel({
     Mode:'Horizontal',
     ID:'tst',
    MoveBy:280,  // (optional) the distance to move each rotation.                      (digits, default = one frame)
     Offset:0,      // (optional) the left offset.                                         (digits, default = 0)
     Duration:1000, // (optional) the duration of each rotation in milli seconds.          (digits, default = 1000)
     Direction:1,   // (optional) -1 = rotate left, 1 = rotate right.                      (digits 1 or -1, default = -1)
     Hold:3000      // (optional) the dutation between each auto rotation in milliseconds. (digits, default = Duration*4)
    });
    
    C.Auto(true);
    /*]]>*/
    </script>
    </body>
    
    </html>
    Last edited by charlie10; 04-17-2010 at 05:00 PM.

  11. #9
    Join Date
    Mar 2010
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    sorry,
    I just found the solution

    #tst {
    position:relative;
    overflow:hidden;
    left:100px;
    width:800px;
    height:200px;
    border:solid black 1px;
    }

    .slide {
    position:absolute;
    left:0px;
    top:0px;
    width:1400px;
    background-Color:#FFCC66;
    border:solid red 0px;
    }

    .slide .frame{
    width:140px;
    height:100px;
    margin-Left:0px;
    float:left;
    }

    .slide .frame IMG{
    width:120px;
    height:100px;
    }

  12. #10
    Join Date
    Mar 2010
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    as you can see here http://www.zwickert.fr/
    with Internet Explorer there is a problem of display when the carousel moves.
    ... the animation is unstable, it lags, it's like if IE couldn't calculate fast enough...

    I don't know what to do

    with Firefox it's ok

    any idea ?

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
  •