Results 1 to 9 of 9

Thread: Image Rotation with thumbnails underneath

  1. #1
    Join Date
    Aug 2010
    Location
    Jacksonville, FL
    Posts
    85
    Thanks
    31
    Thanked 0 Times in 0 Posts

    Default Image Rotation with thumbnails underneath

    Hello,

    Where can I find code that will accomplish something like what Yahoo does?

    I want a randomly rotating set of images with one being a size such as width 477px height 312px with the remaining ones as thumbnails underneath or beside.

    Thank you, Elbee

  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>
    <style type="text/css">
    /*<![CDATA[*/
    
    #SS {
      position:relative;left:100px;top:20px;width:320px;height:320px;border:solid red 1px;
    }
    
    .SS1 {
      position:absolute;overflow:hidden;left:10px;top:10px;width:300px;height:225px;border:solid red 1px;
    }
    
    .SS1 IMG{
      position:absolute;left:0px;top:0px;width:300px;height:225px;border-Width:0px;
    }
    
    .SS2 {
      position:absolute;left:10px;top:240px;width:300px;height:70px;
    }
    
    .page{
      position:relative;left:0px;top:0px;width:70px;height:70px;border:solid red 1px;float:left;margin-Left:2px;background-Color:#FFFFCC;
    }
    
    .active{
      background-Color:#FFCC66;
    }
    
    .mouseover{
      background-Color:#99CC66;
    }
    
    /*]]>*/
    </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.52K) - 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();
     },
    
     cng:function(){
      var oop=this,ms=new Date().getTime()-this.srttime;
      this.data[0]=Math.floor(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);
      }
     },
    
     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]=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.WebkitOpacity=obj.style.KhtmlOpacity=opc/100-.001;
    }
    
    
    </script>
    
    </head>
    
    <body>
     <div id="SS" >
      <div class="SS1" >
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt5.jpg" alt="Image" />
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt6.jpg" alt="Image" />
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt7.jpg" alt="Image" />
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt8.jpg" alt="Image" />
      </div>
      <div class="SS2" >
       <div class="page" ></div>
       <div class="page" ></div>
       <div class="page" ></div>
       <div class="page" ></div>
      </div>
     </div>
    
    </body>
    <script type="text/javascript">
    /*<![CDATA[*/
    
    function zxcSlideShow(o){
     var oop=this,p=document.getElementById(o.ID),clds=p.childNodes,z0=0,ms=o.EffectDuration,ary=[],ary1=[],z1=0,ary2=[],z2=0,z3=0,cls,acls=o.ActiveClassName,mcls=o.MouseoverClassName;
     for (;z0<clds.length;z0++){
      if (clds[z0].nodeType==1){
       ary.push(clds[z0]);
      }
     }
     if (ary[0]&&ary[1]){
      clds=ary[0].childNodes
      for (;z1<clds.length;z1++){
       if (clds[z1].nodeType==1){
        ary1.push(clds[z1]);
       }
      }
      clds=ary[1].childNodes
      for (;z2<clds.length;z2++){
       if (clds[z2].nodeType==1){
        ary2.push(clds[z2]);
       }
      }
      this.ary=[];
      for (;z3<ary1.length;z3++){
       if (ary2[z3]){
        cls=ary2[z3].className;
        this.ary[z3]=[new zxcAnimate('opacity',ary1[z3],z3?0:100),ary2[z3],[cls,cls+' '+(acls?acls:'')]];
        zxcOpacity(ary1[z3],z3?0:100);
        ary1[z3].style.zIndex=z3>0?'0':'1';
        ary2[z3].className=this.ary[z3][2][z3>0?0:1];
        this.addevt(ary2[z3],'mouseup','GoTo',z3);
        if (mcls){
         this.ary[z3][2][2]=cls+' '+mcls;
         this.addevt(ary2[z3],'mouseover','mouse',z3);
         this.addevt(ary2[z3],'mouseout','mouse',z3);
        }
       }
      }
     }
     if (this.ary.length>1){
      this.lst=this.ary[0];
      this.ms=typeof(ms)=='number'?ms:1000;
      this.hold=(typeof(o.Hold)=='number'?o.Hold:2000)+this.ms;
      this.to=null;
      this.cnt=0;
      this.addevt(p,'mouseover','Pause');
      this.addevt(p,'mouseout','Auto');
      if (typeof(o.AutoStart)!='boolean'||o.AutoStart==true){
       this.to=setTimeout(function(){ oop.auto(); },this.hold);
      }
     }
    }
    
    zxcSlideShow.prototype={
    
     GoTo:function(nu){
      if (this.ary[nu]){
       this.Pause();
       this.rotate(nu);
      }
     },
    
     Auto:function(){
      var oop=this;
      this.to=setTimeout(function(){ oop.auto(); },200);
     },
    
     Pause:function(){
      clearTimeout(this.to);
     },
    
     auto:function(){
      var oop=this,nu=this.cnt;
      nu=++nu%this.ary.length;
      this.rotate(nu);
      this.to=setTimeout(function(){ oop.auto(); },this.hold);
     },
    
     addevt:function(o,t,f,p){
      var oop=this;
      if (o.addEventListener) o.addEventListener(t,function(e){ return oop[f](p,e);}, false);
      else if (o.attachEvent) o.attachEvent('on'+t,function(e){ return oop[f](p,e); });
     },
    
     rotate:function(nu){
      this.lst[0].obj.style.zIndex='0';
      this.lst[1].className=this.lst[2][0];
      this.lst[0].animate(this.lst[0].data[0],0,this.ms,[0,100]);
      this.lst=this.ary[nu];
      this.lst[0].obj.style.zIndex='1';
      this.lst[1].className=this.lst[2][1];
      this.lst[0].animate(this.lst[0].data[0],100,this.ms,[0,100]);
      this.cnt=nu;
     },
    
     mouse:function(nu,e){
      if (this.ary[nu]!=this.lst){
       this.ary[nu][1].className=this.ary[nu][2][e.type=='mouseover'?2:0];
      }
     }
    
    }
    
    new zxcSlideShow({
     ID:'SS',    // the unique ID name of the parent node.                         (string)
     ActiveClassName:'active',       // (optional) the active class name.          (string, default = no active class name)
     MouseoverClassName:'mouseover', // (optional) the mouseover class name.       (string, default = no mouseover class name)
     EffectDuration:1000,  // (optional) the effect duration in milli secondes.    (number, default = 1000)
     Hold:2000,            // (optional) the auto hold duration in milli secondes. (number, default = 2000)
     AutoStart:true        // (optional) start auto rotation on initialization.    (boolean, default = true)
    
    });
    
    /*]]>*/
    </script>
    
    </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. The Following User Says Thank You to vwphillips For This Useful Post:

    Elbee (03-29-2011)

  4. #3
    Join Date
    Aug 2010
    Location
    Jacksonville, FL
    Posts
    85
    Thanks
    31
    Thanked 0 Times in 0 Posts

    Default

    Thank you so much for your time Vic!
    He sent me an Angel......!

  5. #4
    Join Date
    Aug 2010
    Location
    Jacksonville, FL
    Posts
    85
    Thanks
    31
    Thanked 0 Times in 0 Posts

    Default Image Rotation with thumbnails underneath

    Hey Vic,

    Why don't the image previews show up in the thumbnails?
    http://jaxpubliclibrary.org/random.html

    Can links to other web pages be connected to the images?

    Thanks for your help, Elbee
    Last edited by Elbee; 03-29-2011 at 08:19 PM.

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

    Default

    preview thumbnail images can be defined in the HTML as are the large images

    going out so will look at the links later
    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/

  7. #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[*/
    
    #SS {
      position:relative;left:100px;top:20px;width:320px;height:320px;border:solid red 1px;
    }
    
    .SS1 {
      position:absolute;overflow:hidden;left:10px;top:10px;width:300px;height:225px;border:solid red 1px;
    }
    
    .SS1 IMG{
      position:absolute;left:0px;top:0px;width:300px;height:225px;border-Width:0px;
    }
    
    .SS2 {
      position:absolute;left:10px;top:240px;width:300px;height:70px;
    }
    
    .page{
      position:relative;left:0px;top:0px;width:70px;height:70px;border:solid red 1px;float:left;margin-Left:2px;background-Color:#FFFFCC;cursor:pointer;
    }
    
    .page IMG{
      position:relative;left:5px;top:12px;width:60px;
    }
    
    .active{
      background-Color:#FFCC66;
    }
    
    .mouseover{
      background-Color:#99CC66;
    }
    
    /*]]>*/
    </style>
    <script  src="http://www.vicsjavascripts.org.uk/Animate/Animate.js" type="text/javascript"></script>
    </head>
    
    <body>
     <div id="SS" >
      <div class="SS1" >
       <a href="#"><img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt5.jpg" alt="Image" /></a>
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt6.jpg" alt="Image" />
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt7.jpg" alt="Image" />
       <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt8.jpg" alt="Image" />
      </div>
      <div class="SS2" >
       <div class="page" ><img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt5.jpg" alt="Image" /></div>
       <div class="page" ><img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt6.jpg" alt="Image" /></div>
       <div class="page" ><img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt7.jpg" alt="Image" /></div>
       <div class="page" ><img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt8.jpg" alt="Image" /></div>
      </div>
     </div>
    
    </body>
    <script type="text/javascript">
    /*<![CDATA[*/
    
    function zxcSlideShow(o){
     var oop=this,p=document.getElementById(o.ID),clds=p.childNodes,z0=0,ms=o.EffectDuration,ary=[],ary1=[],z1=0,ary2=[],z2=0,z3=0,cls,acls=o.ActiveClassName,mcls=o.MouseoverClassName;
     for (;z0<clds.length;z0++){
      if (clds[z0].nodeType==1){
       ary.push(clds[z0]);
      }
     }
     if (ary[0]&&ary[1]){
      clds=ary[0].childNodes
      for (;z1<clds.length;z1++){
       if (clds[z1].nodeType==1){
        ary1.push(clds[z1].nodeName.toUpperCase()=='A'?clds[z1].getElementsByTagName('*')[0]:clds[z1]);
       }
      }
      clds=ary[1].childNodes
      for (;z2<clds.length;z2++){
       if (clds[z2].nodeType==1){
        ary2.push(clds[z2]);
       }
      }
      this.ary=[];
      for (;z3<ary1.length;z3++){
       if (ary2[z3]){
        cls=ary2[z3].className;
        this.ary[z3]=[new zxcAnimate('opacity',ary1[z3],z3?0:100),ary2[z3],[cls,cls+' '+(acls?acls:'')]];
        zxcOpacity(ary1[z3],z3?0:100);
        ary1[z3].style.zIndex=z3>0?'0':'1';
        ary2[z3].className=this.ary[z3][2][z3>0?0:1];
        this.addevt(ary2[z3],'mouseup','GoTo',z3);
        if (mcls){
         this.ary[z3][2][2]=cls+' '+mcls;
         this.addevt(ary2[z3],'mouseover','mouse',z3);
         this.addevt(ary2[z3],'mouseout','mouse',z3);
        }
       }
      }
     }
     if (this.ary.length>1){
      this.lst=this.ary[0];
      this.ms=typeof(ms)=='number'?ms:1000;
      this.hold=(typeof(o.Hold)=='number'?o.Hold:2000)+this.ms;
      this.to=null;
      this.cnt=0;
      this.addevt(p,'mouseover','Pause');
      this.addevt(p,'mouseout','Auto');
      if (typeof(o.AutoStart)!='boolean'||o.AutoStart==true){
       this.to=setTimeout(function(){ oop.auto(); },this.hold);
      }
     }
    }
    
    zxcSlideShow.prototype={
    
     GoTo:function(nu){
      if (this.ary[nu]){
       this.Pause();
       this.rotate(nu);
      }
     },
    
     Auto:function(){
      var oop=this;
      this.to=setTimeout(function(){ oop.auto(); },200);
     },
    
     Pause:function(){
      clearTimeout(this.to);
     },
    
     auto:function(){
      var oop=this,nu=this.cnt;
      nu=++nu%this.ary.length;
      this.rotate(nu);
      this.to=setTimeout(function(){ oop.auto(); },this.hold);
     },
    
     addevt:function(o,t,f,p){
      var oop=this;
      if (o.addEventListener) o.addEventListener(t,function(e){ return oop[f](p,e);}, false);
      else if (o.attachEvent) o.attachEvent('on'+t,function(e){ return oop[f](p,e); });
     },
    
     rotate:function(nu){
      this.lst[0].obj.style.zIndex='0';
      this.lst[1].className=this.lst[2][0];
      this.lst[0].animate(this.lst[0].data[0],0,this.ms,[0,100]);
      this.lst=this.ary[nu];
      this.lst[0].obj.style.zIndex='1';
      this.lst[1].className=this.lst[2][1];
      this.lst[0].animate(this.lst[0].data[0],100,this.ms,[0,100]);
      this.cnt=nu;
     },
    
     mouse:function(nu,e){
      if (this.ary[nu]!=this.lst){
       this.ary[nu][1].className=this.ary[nu][2][e.type=='mouseover'?2:0];
      }
     }
    
    }
    
    new zxcSlideShow({
     ID:'SS',    // the unique ID name of the parent node.                         (string)
     ActiveClassName:'active',       // (optional) the active class name.          (string, default = no active class name)
     MouseoverClassName:'mouseover', // (optional) the mouseover class name.       (string, default = no mouseover class name)
     EffectDuration:1000,  // (optional) the effect duration in milli secondes.    (number, default = 1000)
     Hold:2000,            // (optional) the auto hold duration in milli secondes. (number, default = 2000)
     AutoStart:true        // (optional) start auto rotation on initialization.    (boolean, default = true)
    
    });
    
    /*]]>*/
    </script>
    
    </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/

  8. #7
    Join Date
    Aug 2010
    Location
    Jacksonville, FL
    Posts
    85
    Thanks
    31
    Thanked 0 Times in 0 Posts

    Default Image Rotation with thumbnails underneath

    Thanks Vic for the reply!!!!

    You're great!

    How would I give the images links to other relevant pages to the image? So that they could either click on the large image or any of the thumbnail images and go to a web page explaining that particular image?

    I'm forever indebted to you. Elbee

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

    Default

    the last posted code allows the large images to be nested in links(A tags)

    the thumbnails can also be nested in links
    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/

  10. #9
    Join Date
    Aug 2010
    Location
    Jacksonville, FL
    Posts
    85
    Thanks
    31
    Thanked 0 Times in 0 Posts

    Default Image Rotation with thumbnails underneath

    Thank you so much Vic!

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
  •