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 相关文章推荐
js二级地域选择的实现方法
Jun 17 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
ReactJs快速入门教程(精华版)
Nov 28 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
js原生Ajax的封装和原理详解
Mar 11 Javascript
JS基于封装函数实现的表格分页完整示例
Jun 26 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 Javascript
微信小程序移动拖拽视图-movable-view实例详解
Aug 17 Javascript
vuex实现像调用模板方法一样调用Mutations方法
Nov 06 Javascript
单线程JavaScript实现异步过程详解
May 19 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开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
python去掉行尾的换行符方法
2017/01/04 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Python测试模块doctest使用解析
2019/08/10 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
2014年节能减排工作总结
2014/12/06 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
Nginx跨域问题解析与解决
2022/08/05 Servers