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 MVC框架Backbone.js详解
Sep 18 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
Angularjs的Controller间通信机制实例分析
Nov 07 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
JS构造一个html文本内容成文件流形式发送到后台
Jul 31 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
ES6 Object.assign()的用法及其使用
Jan 18 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 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中current、next与reset函数用法实例
2014/11/17 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
php中使用sftp教程
2015/03/30 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
python之wxPython应用实例
2014/09/28 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
pandas apply多线程实现代码
2020/08/17 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
python二维图制作的实例代码
2020/12/03 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
开放系统互连参考模型
2016/06/29 面试题
销售员岗位职责
2014/06/09 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python