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 相关文章推荐
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
JS实现漂亮的时间选择框效果
Aug 20 Javascript
利用Node.JS实现邮件发送功能
Oct 21 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
May 11 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
手动用webpack搭建第一个ReactApp的示例
Apr 11 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 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
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
PHP时间和日期函数详解
2015/05/08 PHP
django中的ajax组件教程详解
2018/10/18 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
vue+animation实现翻页动画
2020/06/29 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python中函数传参详解
2016/07/03 Python
Python实现多属性排序的方法
2018/12/05 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
django ajax发送post请求的两种方法
2020/01/05 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
一些Solaris面试题
2015/12/22 面试题
大学军训感想
2014/02/12 职场文书
企业承诺书格式
2014/05/21 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js