封装的焦点轮播图代码

封装的焦点轮播图代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
*{margin:0; padding:0;}
ul,ol {list-style:none;}
img {border:none;}
.banner {height:320px; width:852px; position:relative; margin:30px auto;}
.imgs li {height:320px; width:852px; position:absolute; left:0; top:0; opacity:0;}
.nav {position:absolute; bottom:15px; right:15px;}
.nav li {width:20px; height:20px; filter:alpha(opacity:60); opacity:0.6; background:#fff; z-index:3;
color:#000; background:#fff; border:1px solid #000; font-size:12px; text-align:center; line-height:20px;font-weight:600; margin-left:2px; float:left; cursor:pointer;}
.nav li.active {background:#000; border:1px solid #fff; color:#fff;}
</style>
</head>

<body>
<div class="banner">
    <ul class="imgs">
        <li style="opacity:1;"><img src="img/1.png" /></li>
        <li><img src="img/2.jpg" /></li>
        <li><img src="img/3.jpg" /></li>
        <li><img src="img/4.jpg" /></li>
        <li><img src="img/5.jpg" /></li>
    </ul>
    <ul class="nav">
        <li class="active">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </div>
</div>
</body>
</html>
<script type="text/javascript">

  //getByClass
function getByClass (obj, sCls){
  var aEle=obj.getElementsByTagName("*");
  var aResult=[];
  var re=new RegExp("\\b"+sCls+"\\b", "i");
  for(var p=0;p<aEle.length;p++){
    if(re.test(aEle[p].className))aResult.push(aEle[p]);
  }
  return aResult;  
}

//getStyle
function getStyle(obj, attr)
{
 if(obj.currentStyle)
 {
  return obj.currentStyle[attr];
 }
 else
 {
  return getComputedStyle(obj, false)[attr];
 }
}

function Banner(){
  //初始化
  this.init.apply(this, arguments);
}

Banner.prototype={

  init : function(options){

    this.setOptions(options);

    this.aImg=this.options.img;

    this.aNav=this.options.nav;

    this.speed=this.options.speed;

    this.oBanner=this.options.banner;

    this.timer=null;

    this.fadeTimer=null;

    this.iNow=0;      //当前图片

    var that=this;

    this.timer=setInterval(function (){that.next()}, that.speed); //设置自动播放

    this.oBanner.onmouseover=function(){clearInterval(that.timer)};

    this.oBanner.onmouseout=function(){that.timer=setInterval(function (){that.next()}, that.speed)};

    for(var i=0;i<this.aImg.length;i++){

      this.aNav[i].index=i;       //自定义属性

      this.aNav[i].onclick=function(){that.iNow=this.index;that.turnImgs();};
    }
  },
  setOptions : function(options){

    this.options={

      img : this.aImg,    //图片元素集合

      nav : this.aNav,    //按钮导航

      banner : this.oBanner,  //banner容器

      speed : 5000      //切换间隔-->毫秒

    };

    for(var p in options)this.options[p]=options[p];
  },

  turnImgs : function(){

    var that=this;

    for(var i=0;i<this.aImg.length;i++){

      //this.aImg[i].style.opacity=0;
      //this.aImg[i].style.filter="alpha(opacity:0)";
      fade(this.aImg[i], {opacity:0})

      this.aNav[i].className="";
    }

    fade(this.aImg[that.iNow], {opacity:100});

    this.aNav[this.iNow].className="active";

  },

  next : function(){

    this.iNow++;

    this.iNow==this.aImg.length&&(this.iNow=0);

    this.turnImgs();

  },
};

function fade (obj, json)
{
  clearInterval(obj.fadeTimer);
  obj.fadeTimer = setInterval(function(){

    for(var attr in json){
      var iCur=0;

      iCur=parseInt(parseFloat(getStyle(obj, attr))*100);

      var iSpeed=(json[attr]-iCur)/20;
      iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);

      if(attr=="opacity"){obj.style.opacity=(iCur+iSpeed)/100;}
      obj.style.filter="alpha(opacity:"+(iCur+iSpeed)+")";
    }
  },30);
}



window.onload=function(){

  var oBanner=getByClass(document.body, "banner")[0];

  var aImg=getByClass(document.body, "imgs")[0].getElementsByTagName("li");

  var aNav=getByClass(document.body, "nav")[0].getElementsByTagName("li");

  var b1=new Banner({

    banner:   oBanner,    //容器

    img:    aImg,     //图片

    nav:    aNav,     //按钮导航

    speed:    5000      //切换速度

  });
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值