JavaScript实现图片轮播的方法


Posted in Javascript onJuly 31, 2015

本文实例讲述了JavaScript实现图片轮播的方法。分享给大家供大家参考。具体如下:

这里没有使用到JQUERY,没有过渡效果,图片可自行替换 。

test2.html页面:

<!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=utf-8" />
<title>无标题文档</title>
<script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
<style>
.img-div img{display:none;}
</style>
</head>
<body>
<div class="slide" id="slide">
<div class="img-div">
 <img src="model.jpg" />
 <img src="model2.jpg" />
 <img src="model.jpg" />
 <img src="model2.jpg" />
 <img src="model.jpg" />
</div>
<div class="slide-btn">
<a href="#" class="hover">1</a>
<a href="#" class="hover">2</a>
<a href="#" class="hover">3</a>
<a href="#" class="hover">4</a>
<a href="#" class="hover">5</a>
</div>
</div>
<script type="text/javascript">
var zBase=
{
 $id:function(id){return document.getElementById(id);},
 $tagName:function(tagName,obj){return ((obj?obj:document).getElementsByTagName(tagName));},
 $c:function(clsN,obj)
 {
 var tag=this.$tagName('*'),reg=new RegExp('(^|\\s)'+clsN+'(\\s|$)'),arr=[];
 for(var i=0;i<tag.length;i++)
 {
  if(reg.test(tag[i].className))
  {
  arr.push(tag[i]); 
  } 
 }
 return arr;
 },
 $add:function(obj,clsN)
 {
 var reg=new RegExp('(^|\\s)'+clsN+'(\\s|$)');
 if(!reg.test(obj.className))
 {
  obj.className+=' '+clsN; 
 } 
 },
 $remove:function(obj,clsN)
 {
 var cla=obj.className;
 var reg='/|\\s*'+clsN+'\\b/g';
 obj.className=cla?cla.replace(eval(reg),''):''; 
 },
 css:function(obj,attr,value)
 {
 if(value)
 {
  obj.style[attr]=value; 
 } 
 else
 {
  return typeof window.getComputedStyle!="undefined"?window.getComputedStyle(obj,null)[attr]:obj.currentStyle[attr]; 
 }
 },
 easing:
 {
  liner:function(t,b,c,d){return c*t/d+b},
  easeOut:function(t,b,c,d){return -c*((t=t/d-1)*t*t*t-1)+b}
 },
 config:
 {
  index:0,
  auto:true,
  direct:'left' 
 },
 init:function()
 {
  this.slide=this.$id('slide');
  this.img_div=this.$c('img-div')[0];
  this.slide_btn=this.$tagName('a',this.$c('slide-btn')[0]);
  this.img_arr=this.$tagName('img',this.img_div);
  if(this.config.auto){this.play();}
  this.hover();
 },
 animate:function(obj,attr,val)
 {
  var d=1000;
  if(obj[attr+"timer"]){clearInterval(obj[attr+"timer"])};
  var start= parseInt(zBase.css(obj,attr));
  var space=val-start,st=(new Date().getTime()),m=space>0?'cell':'floor';
  obj[attr+'timer']=setInterval(function(){
  var t=(new Date().getTime()-st);
  if(t<d)
  {
   zBase.css(obj,attr,Math[m](zBase.easing["easeOut"](t,start,space,d))+"px");
  }
  else
  {
   clearInterval(obj[attr+'timer']);
   zBase.css(obj,attr,top+space+"px");
  }  
  },20);
 },
 hover:function()
  {
  for(var i=0;i<this.slide_btn.length;i++)
  {
   this.slide_btn[i].index=i;
   this.slide_btn[i].onmouseover=function()
   {
   if(zBase.slide.timer)
   {
    clearInterval(zBase.slide.timer); 
   } 
   zBase.config.index=this.index;
   //console.log(this.slide_btn);
   for(var j=0;j<zBase.slide_btn.length;j++)
   {
    zBase.$remove(zBase.slide_btn[j],'hover');
   }
   zBase.$add(zBase.slide_btn[zBase.config.index],'hover');
   zBase.animate(zBase.img_div,zBase.config.direct,-zBase.config.index*1000);
   }
   this.slide_btn[i].onmouseout=function()
   {
   zBase.play(); 
   }
  }
  },
  play:function(){
  this.slide.timer = setInterval(function(){
   var tags=zBase.$tagName('img',this.img_div);
   //zBase.$tagName('img',this.img_div)[zBase.config.index].style.display="block";
   for(var i =0;i<tags.length;i++)
   {
   if(zBase.config.index==i)
   {
   zBase.$tagName('img',this.img_div)[zBase.config.index].style.display="block";
   } 
   else
   {
   zBase.$tagName('img',this.img_div)[i].style.display="none"; 
   }
   }
   zBase.config.index++;
   if(zBase.config.index>=zBase.img_arr.length) zBase.config.index=0;
   zBase.animate(zBase.img_div,zBase.config.direct,-zBase.config.index*500);
   for(var j=0;j<zBase.slide_btn.length;j++){
   zBase.$remove(zBase.slide_btn[j],'hover') ;
   }
   zBase.$add(zBase.slide_btn[zBase.config.index],'hover');
  },3000)
  }
}
 zBase.init();
</script>
 </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
js 判断一个元素是否在页面中存在
Dec 27 Javascript
JavaScript使用concat连接数组的方法
Apr 06 Javascript
vue.js表格分页示例
Oct 18 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
使vue实现jQuery调用的两种方法
May 12 jQuery
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 Javascript
基于bootstrap3和jquery的分页插件
Jul 31 #Javascript
jquery-tips悬浮提示插件分享
Jul 31 #Javascript
javascript实现检验的各种规则
Jul 31 #Javascript
纯JS实现本地图片预览的方法
Jul 31 #Javascript
javascript动画算法实例分析
Jul 31 #Javascript
jquery实现手机号码选号的方法
Jul 31 #Javascript
javascript文本模板用法实例
Jul 31 #Javascript
You might like
php模板函数 正则实现代码
2012/10/15 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
DOM精简教程
2006/10/03 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
angularjs实现table增加tr的方法
2018/02/27 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
python socket 超时设置 errno 10054
2014/07/01 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
python批量生成条形码的示例
2020/10/10 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书