小白的jquery学习之路04效果 天猫轮播图及解决bug问题


实现效果是:图片轮播,点击时下面对li显示对应图片,接着轮播

为了让两个操作分隔开,

第一种方法:当点击时clearInterval,在执行完操作时再setInterval

 $("#mbb ul li").click(function(){
        window.clearInterval(timer);
        c=$(this).index();
        var left=c*(-952);
        $("#mbb .con").stop().animate({'left':left+'px'},300,function(){
        timer=window.setInterval(function(){run();},2000)});
        $(this).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'})
      }) 


<html>
<head>
	<style type="text/css">
  *{
    margin: 0px auto;
    list-style-type: none;
  }


  #mbb ul{
    position: absolute;bottom: 0px;right: 0px;
  }

  #mbb ul li{
    width: 116px;height:29px;float: left;line-height: 29px;text-align: center;opacity: 0.4;color: white;background-color: black;font-size: 12px;margin-left: 1px;
  }
   #mbb ul li:hover{
    color: #C00;
    
  }

  img{
  width: 952px;height: 440px;float: left;
  }

#mbb{
  width: 952px;height: 440px;border: 4px green solid;margin:0px auto; position: relative;top: 0px;left:0px;overflow: hidden;       
}
#mbb .con{
  width: 5712px;height: 440px;position: absolute;left: 0px;top:0px;
}
	</style>
  


    <script src="jquery.js"></script>
    <script type="text/javascript">
    $(function(){
      var c=0;
      var timer=window.setInterval(function(){run();
      },2000)
     
      $("#mbb ul li").click(function(){
        window.clearInterval(timer);
        c=$(this).index();
        var left=c*(-952);
        $("#mbb .con").stop().animate({'left':left+'px'},300,function(){
        timer=window.setInterval(function(){run();},2000)});
        $(this).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'})
      })   
      function run(){
        c++;
        if(c==5){
            $("#mbb ul li").eq(0).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'}) 
        }

        if(c==6){
              $("#mbb .con").css({'left':'0px'});
              c=1;
        }
        var l=-952*c;

       $("#mbb .con").stop().animate({'left':l+'px'},300);
       $("#mbb ul li").eq(c).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'}) 
      }
      
   })
      
  
</script>


</head>
<body>
<div id="mbb">
  <div class="con">
	     <img src="p1.jpg">
	     <img src="p2.jpg"> 
       <img src="p3.jpg">
       <img src="p4.jpg">
       <img src="p5.jpg">
       <img src="p1.jpg">
   </div>
   <ul>
    <li style="opacity:0.7">衣服1</li>
    <li>裙子2</li>
    <li>套装3</li>
    <li>时尚4</li>
     <li>可爱爱5</li>
  </ul>
</div>






</body>
</html>

第二种方法用setTimeout实现,在300秒之后执行run操作

        clearTimeout(t)
        t=setTimeout(function(){
          timer=window.setInterval(function(){run(); },2000)
        },300)

        c=$(this).index();
        var left=c*(-952);
        $("#mbb .con").stop().animate({'left':left+'px'},300);
        $(this).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'})

同时,为防止不小心点击造成混乱,设置一个flag,再执行完animate操作后flag=2

<html>
<head>
	<style type="text/css">
  *{
    margin: 0px auto;
    list-style-type: none;
  }


  #mbb ul{
    position: absolute;bottom: 0px;right: 0px;
  }

  #mbb ul li{
    width: 116px;height:29px;float: left;line-height: 29px;text-align: center;opacity: 0.4;color: white;background-color: black;font-size: 12px;margin-left: 1px;
  }
   #mbb ul li:hover{
    color: #C00;
    
  }

  img{
  width: 952px;height: 440px;float: left;
  }

#mbb{
  width: 952px;height: 440px;border: 4px green solid;margin:0px auto; position: relative;top: 0px;left:0px;overflow: hidden;       
}
#mbb .con{
  width: 5712px;height: 440px;position: absolute;left: 0px;top:0px;
}
</style>
 
    <script src="jquery.js"></script>
    <script type="text/javascript">
    $(function(){
      var c=0;
      var flag=0;//0代表能点击,1代表不能点击
      var t;
      var timer=window.setInterval(function(){run();
      },2000)
     
      $("#mbb ul li").click(function(){
        if(flag==1){
          return;
        }
        window.clearInterval(timer);
        //为保证多次点击造成timeout混乱
        clearTimeout(t)
        t=setTimeout(function(){
          timer=window.setInterval(function(){run(); },2000)
        },300)

        c=$(this).index();
        var left=c*(-952);
        $("#mbb .con").stop().animate({'left':left+'px'},300);
        $(this).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'})
      })

       
      function run(){
        c++;
        if(c==5){
            $("#mbb ul li").eq(0).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'}) 
        }

        if(c==6){
              $("#mbb .con").css({'left':'0px'});
              c=1;
        }
        var l=-952*c;

       $("#mbb .con").stop().animate({'left':l+'px'},300,function(){
        flag=2;
       });
       $("#mbb ul li").eq(c).css({'opacity':'0.7'}).siblings('li').css({'opacity':'0.4'}) 
      }
      
   })
      
   


       
  
</script>


</head>
<body>

 


<div id="mbb">
  <div class="con">
       <img src="p1.jpg">
       <img src="p2.jpg"> 
       <img src="p3.jpg">
       <img src="p4.jpg">
       <img src="p5.jpg">
       <img src="p1.jpg">
   </div>
   <ul>
    <li style="opacity:0.7">衣服1</li>
    <li>裙子2</li>
    <li>套装3</li>
    <li>时尚4</li>
     <li>可爱爱5</li>
  </ul>
 

</div>

</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值