滚动图片效果 (从盛大 http://www.snda.com/cn/joinsnda/grow.html 抠下来的)

来源:互联网 发布:淘宝全球购买到假货 编辑:程序博客网 时间:2024/04/29 18:38

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0044)http://www.snda.com/cn/joinsnda/members.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>盛大网络</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK
href="members.files/style.css" type=text/css rel=stylesheet><LINK
href="members.files/joinsnda.css" type=text/css rel=stylesheet>
<STYLE type=text/css>#imageFlow {
 RIGHT: 50px; MARGIN: 0px auto; OVERFLOW: hidden; WIDTH: 800px; POSITION: absolute; HEIGHT: 185px
}
#imageFlow .diapo {
 LEFT: -50%; WIDTH: 100px; CURSOR: pointer; POSITION: absolute; HEIGHT: 100px; ms-interpolation-mode: nearest-neighbor
}
#imageFlow .link {
 BORDER-RIGHT: #fff 1px dotted; BORDER-TOP: #fff 1px dotted; MARGIN-BOTTOM: -1px; MARGIN-LEFT: -1px; BORDER-LEFT: #fff 1px dotted; BORDER-BOTTOM: #fff 1px dotted
}
#imageFlow .bank {
 VISIBILITY: hidden
}
#imageFlow .top {
 WIDTH: 50%; POSITION: absolute; HEIGHT: 40%
}
#imageFlow .text {
 Z-INDEX: 1000; LEFT: 0px; WIDTH: 100%; COLOR: #fff; BOTTOM: 16%; FONT-FAMILY: verdana, arial, Helvetica, sans-serif; POSITION: absolute; TOP: 130px; TEXT-ALIGN: center
}
#imageFlow .title {
 FONT-WEIGHT: bold; FONT-SIZE: 14px
}
#imageFlow .legend {
 FONT-SIZE: 12px
}
#imageFlow .scrollbar {
 Z-INDEX: 1000; WIDTH: 100%; POSITION: absolute; TOP: 128px; HEIGHT: 16px
}
#imageFlow .track {
 FILTER: alpha(opacity=30); LEFT: 1%; WIDTH: 98%; POSITION: absolute; HEIGHT: 16px; opacity: 0.3
}
#imageFlow .arrow-left {
 LEFT: 29px; CURSOR: pointer; POSITION: absolute
}
#imageFlow .arrow-right {
 RIGHT: 25px; CURSOR: pointer; POSITION: absolute
}
#imageFlow .bar {
 LEFT: 25px; POSITION: absolute; HEIGHT: 16px
}
</STYLE>

<SCRIPT type=text/javascript>
function preLoadImg(url){
 var img = new Image();
 img.src = url; 
}
preLoadImg("Grow/lmk.jpg");
preLoadImg("Grow/wangjuan.jpg");
preLoadImg("Grow/xcc.jpg");
preLoadImg("Grow/llg.jpg");
preLoadImg("Grow/ylj.jpg");
preLoadImg("Grow/tn.jpg");
preLoadImg("Grow/zgq.jpg");
preLoadImg("Grow/dyk.jpg");
preLoadImg("Grow/hxy.jpg");
preLoadImg("Grow/yl.jpg");
preLoadImg("Grow/lbs.jpg");

</SCRIPT>

<SCRIPT type=text/javascript>
var flowControl = null;
window.onload = function()
{
 setTimeout("AdjustFlow()", 200);
}
function AdjustFlow()
{
 if (flowControl == null)
 {    
  setTimeout("AdjustFlow()", 200);
  return;
 }  
 flowControl.calc(parseInt(window.top.members.length / 2) * -1);
}
var imf = function () {
 var lf = 0;
 var instances = [];
 function getElementsByClass (object, tag, className) {
  var o = object.getElementsByTagName(tag);
  for ( var i = 0, n = o.length, ret = []; i < n; i++)
   if (o[i].className == className) ret.push(o[i]);
  if (ret.length == 1) ret = ret[0];
  return ret;
 }
 function addEvent (o, e, f) {
  if (window.addEventListener) o.addEventListener(e, f, false);
  else if (window.attachEvent) r = o.attachEvent('on' + e, f);
 }
 function createReflexion (cont, img) {
  var flx = false;
  if (document.createElement("canvas").getContext) {
   flx = document.createElement("canvas");
   flx.width = img.width;
   flx.height = img.height;
   var context = flx.getContext("2d");
   context.translate(0, img.height);
   context.scale(1, -1);
   context.drawImage(img, 0, 0, img.width, img.height);
   context.globalCompositeOperation = "destination-out";
   var gradient = context.createLinearGradient(0, 0, 0, img.height * 2);
   gradient.addColorStop(1, "rgba(255, 255, 255, 0)");
   gradient.addColorStop(0, "rgba(255, 255, 255, 1)");
   context.fillStyle = gradient;
   context.fillRect(0, 0, img.width, img.height * 2);
  } else {
   /* ---- DXImageTransform ---- */
   flx     = document.createElement('img');
   flx.src = img.src;
   flx.style.filter = 'flipv progid:DXImageTransform.Microsoft.Alpha(' +
                      'opacity=50, style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy=' +
          (img.height * .25) + ')';
  }
  /* ---- insert Reflexion ---- */
  flx.style.position = 'absolute';
  flx.style.left     = '-1000px';
  cont.appendChild(flx);
  return flx;
 }
 /* //////////// ==== ImageFlow Constructor ==== //////////// */
 function ImageFlow(oCont, size, zoom, border) {
  this.diapos     = [];
  this.scr        = false;
  this.size       = size;
  this.zoom       = zoom;
  this.bdw        = border;
  this.oCont      = oCont;
  this.oc         = document.getElementById(oCont);
  this.scrollbar  = getElementsByClass(this.oc,   'div', 'scrollbar');
  this.text       = getElementsByClass(this.oc,   'div', 'text');
  this.title      = getElementsByClass(this.text, 'div', 'title');
  this.legend     = getElementsByClass(this.text, 'div', 'legend');
  this.bar        = getElementsByClass(this.oc,   'img', 'bar');
  this.arL        = getElementsByClass(this.oc,   'img', 'arrow-left');
  this.arR        = getElementsByClass(this.oc,   'img', 'arrow-right');
  this.bw         = this.bar.width;
  this.alw        = this.arL.width - 5;
  this.arw        = this.arR.width - 5;
  this.bar.parent = this.oc.parent  = this;
  this.arL.parent = this.arR.parent = this;
  this.view       = this.back       = -1;
  this.resize();
  this.oc.onselectstart = function () { return false; }
  /* ---- create images ---- */
  var img   = getElementsByClass(this.oc, 'div', 'bank').getElementsByTagName('a');
  this.NF = img.length;
  
  for (var i = 0, o; o = img[i]; i++) {
   this.diapos[i] = new Diapo(this, i,
          o.rel,
          o.title || '- ' + i + ' -',
          o.innerHTML || o.rel,
          o.href || '',
          o.target || '_self'
   );
  }
  /* ==== add mouse wheel events ==== */
  if (window.addEventListener)
   this.oc.addEventListener('DOMMouseScroll', function(e) {
    this.parent.scroll(-e.detail);
   }, false);
  else this.oc.onmousewheel = function () {
   this.parent.scroll(event.wheelDelta);
  }
  /* ==== scrollbar drag N drop ==== */
  this.bar.onmousedown = function (e) {
   if (!e) e = window.event;
   var scl = e.screenX - this.offsetLeft;
   var self = this.parent;
   /* ---- move bar ---- */
   this.parent.oc.onmousemove = function (e) {
    if (!e) e = window.event;
    self.bar.style.left = Math.round(Math.min((self.ws - self.arw - self.bw), Math.max(self.alw, e.screenX - scl))) + 'px';
    self.view = Math.round(((e.screenX - scl) ) / (self.ws - self.alw - self.arw - self.bw) * self.NF);
    if (self.view != self.back) self.calc();
    return false;
   }
   /* ---- release scrollbar ---- */
   this.parent.oc.onmouseup = function (e) {
    self.oc.onmousemove = null;
    return false;
   }
   return false;
  }
  /* ==== right arrow ==== */
  this.arR.onclick = this.arR.ondblclick = function () {  
   if (this.parent.view < this.parent.NF - 1)
    this.parent.calc(1);   
  }
  /* ==== Left arrow ==== */
  this.arL.onclick = this.arL.ondblclick = function () {  
   if (this.parent.view > 0)
    this.parent.calc(-1);
  }
 }
 /* //////////// ==== ImageFlow prototype ==== //////////// */
 ImageFlow.prototype = {
  /* ==== targets ==== */
  calc : function (inc) {      
   if (inc&&parseInt(window.top.members.length / 2) * -1==inc) this.view += inc;   
   if(inc)
   {  
       var aba=new Array();//      
      
       for (var i = 0,max=this.diapos.length; i<max;i++)
       {
           if(i+inc>(max-1))
           {                                
              aba[i]=this.diapos[(i+inc)-(max)];             
           }
           else if(i+inc<0)
           {             
              aba[i]=this.diapos[max+i+inc];
           }
           else
           {
              aba[i]=this.diapos[i+inc];
            } 
            aba[i].N=i;            
        }          
        this.diapos=aba;     
   }
   var tw = 0;
   var lw = 0;
   
   var o = this.diapos[this.view];
   
   if (o && o.loaded) {
    /* ---- reset ---- */
    this.back=inc>0?this.view-1:this.view+1;
    var ob = this.diapos[this.back];
    if (ob && ob != o) {
     ob.img.className = 'diapo';
     ob.z1 = 1;
    }
    /* ---- update legend ---- */
    this.title.replaceChild(document.createTextNode(o.title), this.title.firstChild);
    this.legend.replaceChild(document.createTextNode(o.text), this.legend.firstChild);
    /* ---- update hyperlink ---- */    
    if (o.url) {
     o.img.className = 'diapo link';
     window.status = 'hyperlink: ' + o.url;
    } else {
     o.img.className = 'diapo';
     window.status = '';
    }
    /* ---- calculate target sizes & positions ---- */
    o.w1 = Math.min(o.iw, this.wh * .5) * o.z1;
    var x0 = o.x1 = (this.wh * .5) - (o.w1 * .5);
    var x = x0 + o.w1 + this.bdw;
    for (var i = this.view + 1, o; o = this.diapos[i]; i++) {
     if (o.loaded) {
      o.x1 = x;
      o.w1 = (this.ht / o.r) * this.size;
      x   += o.w1 + this.bdw;
      tw  += o.w1 + this.bdw;
     }
    }
    x = x0 - this.bdw;
    for (var i = this.view - 1, o; o = this.diapos[i]; i--) {
     if (o.loaded) {
      o.w1 = (this.ht / o.r) * this.size;
      o.x1 = x - o.w1;
      x   -= o.w1 + this.bdw;
      tw  += o.w1 + this.bdw;
      lw  += o.w1 + this.bdw;
     }
    }
    /* ---- move scrollbar ---- */
    if (!this.scr && tw) {
     var r = (this.ws - this.alw - this.arw - this.bw) / tw;
     this.bar.style.left = Math.round(this.alw + lw * r) + 'px';
    }
    /* ---- save preview view ---- */
    //this.back = this.view;
   }
  },
  /* ==== mousewheel scrolling ==== */
  scroll : function (sc) {
   if (sc < 0) {
    if (this.view < this.NF - 1) this.calc(1);
   } else {
    if (this.view > 0) this.calc(-1);
   }
  },
  /* ==== resize  ==== */
  resize : function () {
   this.wh = this.oc.clientWidth;
   this.ht = this.oc.clientHeight;
   this.ws = this.scrollbar.offsetWidth;
   this.calc();
   this.run(true);
  },
  /* ==== move all images  ==== */
  run : function (res) {
   var i = this.NF;   
   while (i--) this.diapos[i].move(res);
  }
 }
 /* //////////// ==== Diapo Constructor ==== //////////// */
 Diapo = function (parent, N, src, title, text, url, target) {
  this.parent        = parent;
  this.loaded        = false;
  this.title         = title;
  this.text          = text;
  this.url           = url;
  this.target        = target;
  this.N             = N;
  this.img           = document.createElement('img');
  this.img.src       = src;
  this.img.parent    = this;
  this.img.className = 'diapo';
  this.x0            = this.parent.oc.clientHeight;
  this.x1            = this.x0;
  this.w0            = 0;
  this.w1            = 0;
  this.z1            = 1;
  this.img.parent    = this;
  this.img.onclick   = function() { this.parent.click(); }
  this.parent.oc.appendChild(this.img);
  /* ---- display external link ---- */
  if (url) {
   this.img.onmouseover = function () { this.className = 'diapo link'; }
   this.img.onmouseout  = function () { this.className = 'diapo'; }
  }
 }
 /* //////////// ==== Diapo prototype ==== //////////// */
 Diapo.prototype = {
  /* ==== HTML rendering ==== */
  move : function (res) {
   if (this.loaded) {
    var sx = this.x1 - this.x0;
    var sw = this.w1 - this.w0;
    
    if (Math.abs(sx) > 2 || Math.abs(sw) > 2 || res) { 
    
    //alert("this.n:"+this.N+" "+this.parent.view)
    //alert(this.title+":x1"+this.x0+":"+this.x1+"  N:"+this.N+" sx:"+sx+" sw:"+sw)
     /* ---- paint only when moving ---- */
     this.x0 += sx * .1;
     this.w0 += sw * .1;     
     if (this.x0 < this.parent.wh && this.x0 + this.w0 > 0&&Math.abs(this.parent.view-this.N)<6) {
      /* ---- paint only visible images ---- */
      this.visible = true;
      var o = this.img.style;
      var h = this.w0 * this.r;
      /* ---- diapo ---- */
      o.left   = Math.round(this.x0) + 'px';
      o.bottom = Math.floor(this.parent.ht * .45) + 'px'; //img height
      o.width  = Math.round(this.w0) + 'px';
      o.height = Math.round(h) + 'px';
      /* ---- reflexion ---- */
      if (this.flx) {
       var o = this.flx.style;
       o.left   = Math.round(this.x0) + 'px';
       o.top    = Math.ceil(this.parent.ht * .55 + 1) + 'px'; //shadow height
       o.width  = Math.round(this.w0) + 'px';
       o.height = Math.round(h) + 'px';
      }
     } else {
      /* ---- disable invisible images ---- */
      if (this.visible) {
       this.visible = false;
       this.img.style.width = '0px';
       if (this.flx) this.flx.style.width = '0px';
      }
     }
    }
   } else {
    /* ==== image onload ==== */
    //if (this.img.complete && this.img.width) {
     /* ---- get size image ---- */
     this.iw     = this.img.width;
     this.ih     = this.img.height;
     this.r      = this.ih / this.iw;
     this.loaded = true;
     /* ---- create reflexion ---- */
     this.flx    = createReflexion(this.parent.oc, this.img);
     if (this.parent.view < 0)
     {
      this.parent.view = this.N;
      flowControl = this.parent;
     }
     //this.parent.calc();
    //}
   }
  },
  /* ==== diapo onclick ==== */
  click : function () {
   if (this.parent.view == this.N) {
    /* ---- click on zoomed diapo ---- */
    if (this.url) {
     /* ---- open hyperlink ---- */
     window.open(this.url, this.target);
    } else {
     /* ---- zoom in/out ---- */
     this.z1 = this.z1 == 1 ? this.parent.zoom : 1;
     this.parent.calc();
    }
   } else {
    /* ---- select diapo ---- */    
    //this.parent.view = this.N;
    this.parent.calc( this.N-this.parent.view );
    /*
    ADDED BY SEAN.WOOD TO SHOW MEMBER
    */
    window.open(this.url, this.target);
    /*
    END ADD
    */
   }
   return false;
  }
 }
 /* //////////// ==== public methods ==== //////////// */
 return {
  /* ==== initialize script ==== */
  create : function (div, size, zoom, border) {   
   /* ---- instanciate imageFlow ---- */
   var load = function () {
    var loaded = false;
    var i = instances.length;
    
    while (i--) if (instances[i].oCont == div) loaded = true;
    if (!loaded) {
     /* ---- push new imageFlow instance ---- */
     flowControl = new ImageFlow(div, size, zoom, border);
     instances.push(
      flowControl
     );     
     /* ---- init script (once) ---- */
     if (!imf.initialized) {
      imf.initialized = true;
      /* ---- window resize event ---- */
      addEvent(window, 'resize', function () {
       var i = instances.length;
       while (i--) instances[i].resize();
      });
      /* ---- stop drag N drop ---- */
      addEvent(document.getElementById(div), 'mouseout', function (e) {
       if (!e) e = window.event;
       var tg = e.relatedTarget || e.toElement;
       if (tg && tg.tagName == 'HTML') {
        var i = instances.length;
        while (i--) instances[i].oc.onmousemove = null;
       }
       return false;
      });
      /* ---- set interval loop ---- */
      setInterval(function () {
       var i = instances.length;
       while (i--) instances[i].run();
      }, 16);
     }
    }
   }
   /* ---- window onload event ---- */
   addEvent(window, 'load', function () { load(); });
  }
 }
}();

/* ==== create imageFlow ==== */
//          div ID    , size, zoom, border
imf.create("imageFlow", 0.4, 1.5, 33);

</SCRIPT>

<SCRIPT type=text/javascript>
function setDiv()
{
 document.getElementById('d0_p').style.display = 'none';
 document.getElementById('d1_p').style.display = 'none';
 document.getElementById('d2_p').style.display = 'none';
 document.getElementById('d3_p').style.display = 'none';
 document.getElementById('d4_p').style.display = 'none';
 document.getElementById('d5_p').style.display = 'none';
}
window.top.contentDiv = null;
window.top.ShowMember = function(index)
{
    var contentType="";    
   
 if (window.top.contentDiv == null)
 {
  var divs = window.top.document.getElementsByTagName("div");
     for (var i = 0; i < divs.length; i++)
     {
      if (divs[i].className == "grow_content")
      {
       window.top.contentDiv = divs[i];
       contentType="grow_content";
       break;
      }
     }    
  
     divs = window.top.document.getElementsByTagName("ul");
     for (var i = 0; i < divs.length; i++)
     {
      if (divs[i].className == "ul_grow_content")
      {
       window.top.contentDiv = divs[i];
       contentType="ul_grow_content";
       break;
      }
     }
 }
 else if(window.top.contentDiv.className=="grow_content")
 {
     contentType=window.top.contentDiv.className;
     var divs = window.top.document.getElementsByTagName("ul");
     for (var i = 0; i < divs.length; i++)
     {
      if (divs[i].className == "ul_grow_content")
      {
       window.top.contentDiv = divs[i];
       contentType="ul_grow_content";
       break;
      }
     }
 }
 else 
   contentType=window.top.contentDiv.className;
 //alert(contentType);
 if (window.top.contentDiv == null)
 {
  return;
 }
 if (window.top.members[index] == null)
 {
  return;
 }
 var member = window.top.members[index];
 var growContent= "<div class=/"people_introbox/">"+
"     <ul class=/"ul_grow_content/">"+
"      <li class=/"fst/" >"+
"           <table width=/"100%/" border=/"0/" cellspacing=/"16/" cellpadding=/"0/">"+
"             <tr>"+
"               <td width=/"89/" valign=/"top/"><img src=/""+ member.Pic +"/" width=/"89/" height=/"89/" /></td>"+
"               <td width=/"17/" valign=/"top/"><img src=/""+ member.Icon +"/" width=/"14/" height=/"29/" /></td>"+
"               <td height=/"350/" valign=/"top/"><strong>"+ member.Department +"</strong><br />"+
"                 "+ member.Job +
"                 <br /><div><br />"+
"                "+ member.Intro +"</div></td>"+
"             </tr>"+
"           </table>"+
"         </li>"+
"        </ul> <table width=/"100%/" border=/"0/" cellspacing=/"0/" cellpadding=/"0/">"+
"          <tr>"+
"            <td align=/"center/"><img src=/"../common/images/grow_mainbg_bottom.jpg/" width=/"530/" height=/"202/" /></td>"+
"       </tr>"+
"        </table>"+
"       <br /></div><div class=/"joinsnda_shbg/"></div><div class=/"joinsnda_peo_icon/"></div>"+
"  </div>"+
"  <div class=/"clearboth/"></div>"+
"  </div>";

     var ulGrowContent = "      <li class=/"fst/" >"+
"           <table width=/"100%/" border=/"0/" cellspacing=/"16/" cellpadding=/"0/">"+
"             <tr>"+
"               <td width=/"89/" valign=/"top/"><img src=/""+ member.Pic +"/" width=/"89/" height=/"89/" /></td>"+
"               <td width=/"17/" valign=/"top/"><img src=/""+ member.Icon +"/" width=/"14/" height=/"29/" /></td>"+
"               <td height=/"350/" valign=/"top/"><strong>"+ member.Department +"</strong><br />"+
"                 "+ member.Job +
"                 <br /><div><br />"+
"                "+ member.Intro +"</div></td>"+
"             </tr>"+
"           </table>"+
"         </li>";

    if(contentType=="grow_content")
     window.top.contentDiv.innerHTML = growContent;
 else if(contentType=="ul_grow_content")
     window.top.contentDiv.innerHTML = ulGrowContent;
}
</SCRIPT>

<META content="MSHTML 6.00.2900.5945" name=GENERATOR></HEAD>
<BODY>
<DIV class="body joinsnda_shbg" id=body0>
<DIV class=photoflow style="POSITION: relative">
<DIV id=imageFlow>
<DIV class=top></DIV>
<DIV class=bank>
<SCRIPT type=text/javascript>
     for (var i = 0; i < window.top.members.length; i++)
     {
      var member = window.top.members[i];
      document.write("<a rel=/""+member.Pic+"/" title=/""+member.Name+"/" href=/"javascript:window.top.ShowMember(" + i + ");/">"+member.Department+"</a>");
     }
     
     </SCRIPT>
</DIV>
<DIV class=text>
<DIV class=title>Loading</DIV>
<DIV class=legend>Please wait...</DIV></DIV>
<DIV class=scrollbar><IMG class=arrow-left alt=""
src="Grow/flow_arr_l.gif"> <IMG class=arrow-right alt=""
src="Grow/flow_arr_r.gif"></DIV><IMG class=track style="DISPLAY: none"
alt="" src="members.files/sb.gif"> <IMG class=bar style="DISPLAY: none" alt=""
src="members.files/sc.gif"> </DIV>
<DIV style="DISPLAY: none"><IMG alt="" src="members.files/lmk.jpg"> <IMG alt=""
src="members.files/wangjuan.jpg"> <IMG alt="" src="members.files/xcc.jpg"> <IMG
alt="" src="members.files/llg.jpg"> <IMG alt="" src="members.files/ylj.jpg">
<IMG alt="" src="members.files/tn.jpg"> <IMG alt="" src="members.files/zgq.jpg">
<IMG alt="" src="members.files/dyk.jpg"> <IMG alt=""
src="members.files/hxy.jpg"> <IMG alt="" src="members.files/yl.jpg"> <IMG alt=""
src="members.files/lbs.jpg"> <IMG alt="" src="members.files/ljw.jpg"> <IMG
alt="" src="members.files/xj.jpg"> <IMG alt="" src="members.files/srq.jpg"> <IMG
alt="" src="members.files/wfl.jpg"> <IMG alt="" src="members.files/wj.jpg"> <IMG
alt="" src="members.files/lk.jpg"> <IMG alt="" src="members.files/zy.jpg"> <IMG
alt="" src="members.files/wf.jpg"> <IMG alt="" src="members.files/yh.jpg"> <IMG
alt="" src="members.files/xyy.jpg"> <IMG alt="" src="members.files/lj.jpg"> <IMG
alt="" src="members.files/gc.jpg"> <IMG alt="" src="members.files/xl.jpg"> <IMG
alt="" src="members.files/zjr.jpg"> <IMG alt="" src="members.files/sj.jpg"> <IMG
alt="" src="members.files/csh.jpg"> <IMG alt="" src="members.files/zw.jpg">
</DIV></DIV></DIV></BODY></HTML>

原创粉丝点击