论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Javascript教程
Tag:验证,特效,入门,实例,验证,表单,特效,正则表达式,跑马灯,document,函数,代码,getElementByID,菜单,图片,视频教程

JavaScript实现图片的切换

文章类别:Javascript | 发表日期:2010-7-6 15:56:23

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
 #focus_m{position:relative; width:420px; height:384px; background:#133775}
 .f_img_roll{width:350px; height:300px; position:relative;}
 .f_img_roll img{position:absolute; left:0; top:0; width:350px; height:300px;}
 .f_img_tree{position:absolute; width:75px; height:300px; right:3px; top:0;}
 .f_img_tree div{position:absolute; z-index:300; top:3px; right:0; width:75px; height:47px; background:url(http://www.kuanghong.com/han/images/mask.gif) no-repeat;}
 .f_img_tree ul{margin:0; padding:0; list-style:none; position:absolute; right:0;}
 .f_img_tree li{width:60px; height:45px; border:1px solid #0066cc; margin-top:3px;}
    .f_img_tree img{width:54px; height:39px; border:3px solid #000066; vertical-align:top;}
 .f_con{color:#fff; height:70px;}
 .f_con .title{font-size:14px; height:30px; line-height:30px; margin-top:5px; font-weight:bold; text-align:center;}
 .f_con .title a:link, .f_con .title a:visited{color:#fff; text-decoration:none}
 .f_con .title a:hover{text-decoration:underline}
 .f_con .con{font-size:12px; padding:0 10px; height:40px; line-height:150%;}
  </style>
<script type="text/javascript">
function $A(iterable) {
 var results = [];
 for (var i = 0; i < iterable.length; i++)results.push(iterable[i]);
 return results;
}
Function.prototype.bind = function() {
 var __method = this, args = $A(arguments), object = args.shift();
 return function() {
  return __method.apply(object, args.concat($A(arguments)));
 }
}
var imgs = [
  {max:'http://www.kuanghong.com/han/images/img_1.jpg', min:'http://www.kuanghong.com/han/images/img_1s.jpg', url:'#', title:'标题01标题01标题01标题01标题01', con:'内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01内容01'},
  {max:'http://www.kuanghong.com/han/images/img_2.jpg', min:'http://www.kuanghong.com/han/images/img_2s.jpg', url:'#', title:'标题02标题02标题02标题02标题02', con:'内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02内容02'},
  {max:'http://www.kuanghong.com/han/images/img_3.jpg', min:'http://www.kuanghong.com/han/images/img_3s.jpg', url:'#', title:'标题03标题03标题03标题03标题03', con:'内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03内容03'},
  {max:'http://www.kuanghong.com/han/images/img_4.jpg', min:'http://www.kuanghong.com/han/images/img_4s.jpg', url:'#', title:'标题04标题04标题04标题04标题04', con:'内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04内容04'},
  {max:'http://www.kuanghong.com/han/images/img_5.jpg', min:'http://www.kuanghong.com/han/images/img_5s.jpg', url:'#', title:'标题05标题05标题05标题05标题05', con:'内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05内容05'},
  {max:'http://www.kuanghong.com/han/images/img_6.jpg', min:'http://www.kuanghong.com/han/images/img_6s.jpg', url:'#', title:'标题06标题06标题06标题06标题06', con:'内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06内容06'}
 ];
function Focus(){ this.initialize.apply(this, arguments) };
Focus.prototype = {
 initialize: function(imgObj, focus, tim, speed){
  this.imgs  = imgObj;
  this.tim  = tim*1000 || 2000;
  this.speed  = speed  || 0.3;
  this.img_m  = null; // 大图
  this.img_m2  = null; // 大图2
  this.lis  = []; // 小图列表
  this.mask  = null; // 蒙板
  this.title  = null; // 标题
  this.con  = null; // 内容
  this.cur  = 0; // 当前位置
  this.t   = null; // 整体计时
  this.tm   = null; // mask位置
  this.ti   = null; // img 切换
  this.stoped  = true; // 停止状态
  this.tem  = 0; // 临时数据
  this.loaded  = {imgs:[], num:0}; // 加载进度
  this.getElement(document.getElementById(focus));
  this.preload();
 },
 preload: function(){
  for(var i=0; i<this.imgs.length; i++){
   this.loaded.imgs[i]   = new Image();
   this.loaded.imgs[i].onload = this.load_num.bind(this);
   this.loaded.imgs[i].src  = this.imgs[i].max;
  }
 },
 load_num: function(){
  this.loaded.num++;
  if(this.loaded.num == this.imgs.length)
   this.start();
 },
 getElement: function(focus){ // 获得蒙板,小图列表,标题/内容容器等。。。
  var ds = focus.getElementsByTagName('div');
  for(var i=0; i<ds.length; i++)
   switch(ds[i].className){
    case 'f_img_roll':
     this.img_m       = document.createElement('img');
     this.img_m2       = document.createElement('img');
     this.img_m.src      = this.imgs[0].max;
     this.img_m.style.zIndex    = 101;
     this.img_m2.style.zIndex   = 100;
     ds[i].onmouseover     = this.stop.bind(this);
     ds[i].onmouseout     = this.start.bind(this);
     ds[i].appendChild(this.img_m);
     ds[i].appendChild(this.img_m2);
    
    case 'f_img_tree':
     this.mask       = document.createElement('div');
     this.mask.onmouseover    = this.stop.bind(this);
     this.mask.onmouseout    = this.start.bind(this);
     var ul        = document.createElement('ul');
     var oThis       = this;
     for(var n=0; n<this.imgs.length; n++){
      this.lis[n]      = document.createElement('li');
      this.lis[n].n     = n;
      this.lis[n].innerHTML   = '<img src="'+this.imgs[n].min+'" />';
      this.lis[n].onmouseover   = function(){ this.style.border = "1px solid #cc0000"; }
      this.lis[n].onmouseout   = function(){ this.style.border = "1px solid #0066cc"; }
      this.lis[n].onclick    = function(){ if(oThis.lis[oThis.cur] != this) oThis.nextFrame.call(oThis, this.n); }
      ul.appendChild(this.lis[n]);
     };
     ds[i].appendChild (this.mask);
     ds[i].appendChild (ul);
     break;
    case 'title':
     this.title       = ds[i];
     this.title.innerHTML    = this.imgs[0].title;
     this.title.parentNode.onmouseover = this.stop.bind(this);
     this.title.parentNode.onmouseout = this.start.bind(this);
     break;
    case 'con':
     this.con       = ds[i];
     this.con.innerHTML     = this.imgs[0].con;
     break;
   }
 },
 
 nextFrame: function(n){
  if (this.t) clearTimeout(this.t);
  if (this.tm) clearInterval(this.tm);
  if (this.ti) clearInterval(this.ti);
  if (n)   this.cur = n-1;
  var top = 0, posTo = 0;
  if (n!=0 && this.imgs[this.cur+1]){
   posTo = this.lis[this.cur+1].offsetTop;
   this.cur = this.cur+1;
  }else{
   posTo = this.lis[0].offsetTop;
   this.cur = 0;
  }
  this.tem = this.mask.offsetTop;
  this.tem > posTo? top = 1 : top = 0;
  this.tm  = setInterval(this.moveTo.bind(this, top, posTo), 25);
 },
 
 moveTo: function(top, posTo){
  if(!top){
   if((this.tem+2) >= posTo+1){
    clearInterval(this.tm);
    this.mask.style.top = posTo+'px';
    this.img_swap();
    return;
   }
   this.tem += (posTo - this.tem) * this.speed
  }else{
   if((this.tem-2) <= posTo-1){
    clearInterval(this.tm);
    this.mask.style.top = posTo+'px';
    this.img_swap();
    return;
   }
   this.tem -= (this.tem-posTo)*this.speed;
  }
  this.mask.style.top = this.tem+'px';
 },
 img_swap: function(){
  var t, b;
  if(this.img_m.style.zIndex > this.img_m2.style.zIndex){
   t = this.img_m;
   b = this.img_m2;
  }else{
   t = this.img_m2;
   b = this.img_m;
  }
  this.title.innerHTML = '<a href="'+this.imgs[this.cur].url+'">'+this.imgs[this.cur].title+'</a>';
  this.con.innerHTML  = this.imgs[this.cur].con;
  b.src     = this.imgs[this.cur].max;
  /MSIE/.test(navigator.userAgent) ?
   this.tem = t.style.filter ? t.style.filter.replace(/^.+=(\d+).+$/,'$1') : 100
   : this.tem = t.style.opacity ? t.style.opacity*100 : 100;
  if (this.ti) clearInterval(this.ti);
  this.ti = setInterval(this.img_hid.bind(this, t, b), 25);
 },
 img_hid: function(t,b){
  this.tem -= 7;
  if (/MSIE/.test(navigator.userAgent))
   t.style.filter = 'alpha(opacity='+this.tem+')';
  else
   t.style.opacity = this.tem/100;
  if(this.tem <=0){
   clearInterval(this.ti);
   var tz   = t.style.zIndex;
   var bz   = b.style.zIndex;
   t.style.zIndex = bz
   b.style.zIndex = tz;
   if (/MSIE/.test(navigator.userAgent))
    t.style.filter = 'alpha(opacity=100)';
   else
    t.style.opacity = 1;
   if(this.stoped) return;
   this.start(); // 继续循环
  }
 },
 start: function(){
  if(this.t) clearTimeout(this.t);
  this.t  = setTimeout(this.nextFrame.bind(this, null), this.tim);
  this.stoped = false;
 },
 stop: function(){
  clearTimeout(this.t);
  this.stoped = true;
 }
}
  window.onload = function(){
   var focus = new Focus(imgs,'focus_m');
   //focus.start();
  }
  </script>
</head>
<body>
<div id="focus_m">
  <div class="f_img_roll"></div><div class="f_img_tree"></div>
  <div class="f_con">
 <div class="title"></div>
 <div class="con"></div>
  </div>
</div>
</body>
</html>

上一篇:在线裁剪图片jquery插件Jcrop 人气:3690
下一篇:JavaScript图片放大效果 人气:3706
视频教程列表
文章教程搜索
 
Javascript推荐教程
Javascript热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058