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 相关文章推荐
javascript的解析执行顺序在各个浏览器中的不同
Mar 17 Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 Javascript
原生javascript实现自动更新的时间日期
Feb 12 Javascript
深入理解vue路由的使用
Mar 24 Javascript
js实现三级联动效果(简单易懂)
Mar 27 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
vue导出html、word和pdf的实现代码
Jul 31 Javascript
详解React native fetch遇到的坑
Aug 30 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
Nov 03 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 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中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
Javascript 解疑
2009/11/11 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
详解如何构建Angular项目目录结构
2017/07/13 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
浅析Python中的join()方法的使用
2015/05/19 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
介绍一下木马病毒的种类
2015/07/26 面试题
员工培训邀请函
2014/01/11 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2015学校年度工作总结
2015/05/11 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书