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封装的不错的选项卡效果代码
Feb 15 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
jQuery实现文本框邮箱输入自动补全效果
Nov 17 Javascript
继续学习javascript闭包
Dec 03 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
微信jssdk逻辑在vue中的运用详解
Nov 14 Javascript
javascript实现支付宝滑块验证码效果
Jul 24 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读取RSS feed的代码
2008/08/01 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
神经网络理论基础及Python实现详解
2017/12/15 Python
Python贪心算法实例小结
2018/04/22 Python
Python实现图片拼接的代码
2018/07/02 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
python中pivot()函数基础知识点
2021/01/03 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
元旦联欢会策划方案
2014/06/11 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
python程序的组织结构详解
2021/12/06 Python
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript