zoukankan      html  css  js  c++  java
  • 图片切换效果

     1     <div class="ad" >
     2              <ul class="slider" >
     3                 <li><img src="images/ads/1.gif"/></li>
     4                 <li><img src="images/ads/2.gif"/></li>
     5                 <li><img src="images/ads/3.gif"/></li>
     6                 <li><img src="images/ads/4.gif"/></li>
     7                 <li><img src="images/ads/5.gif"/></li>
     8               </ul>
     9               <ul class="num" >
    10                 <li>1</li>
    11                 <li>2</li>
    12                 <li>3</li>
    13                 <li>4</li>
    14                 <li>5</li>
    15               </ul>
    16         </div>
    
    
    1.当光标滑过数字1时,需要显示第1张图片,当光标滑过数字2时,需要显示第2张图片。以此类推。
    如果能正确获取到当前滑过的数字,那么完成该效果就非常简单了。
     
    1 $(function(){
    2    var index=0;
    3    $(".num li").mouseover(function(){
    4       showImg(index);
    5    }).eq(0).mouseover();
    6 })

    //定义了一个showImg()函数,然后给函数传递了一个参数index,index代表当前要显示图片的索引。获取当前滑过的<li>元素在所有的<li>元素中的索引可以使用jQuery的index()方法来获取。
    其中.eq(0).mouseover()部分是用来初始化。让第1个数字高亮并显示第1个广告,如果需要可以修改eq()方法中的数字来让页面默认显示任意一个广告。
     
    代码如下:
     1 var index=0;
     2 $(".num li").mouseover(function(){
     3   index=$(".num li").index(this);
     4   showimg(index);
     5 }).eq(0).mouseover();
     6 //接下来完成showImg()函数,showImg()函数代码如下:
     7 function showimg(index){
     8   var adheight = $(".content_right .ad").height();
     9   $(".slider").stop(true,false).animate({top:-adHeight*index},1000);
    10   $(".num li").removeClass("on");
    11   .eq(index).addClass("on");
    12 }

     
    首先用$(".content_right .ad").height()方法获取产品广告的高度,然后使用animate()方法来达到动画效果,
    每个图片滚动的高度有所不同,可以通过传入的参数index的值乘以产品广告的高度来得到,在animate()方法前,
    使用stop(true,false)方法将未执行完成的动画队列清空。但不将正在执行的动画跳转到未状态,
    最后使用$(".num li").eq(index).addClass("on").removeClass("on");来给当前的广告数字添加高亮样式。
     
    现在,当光标在广告右下角的数字滑过时,广告就会有上下翻转的效果。但如果不去碰它,
    那么广告始终不会动,因此接下来需要为广告添加自动执行效果,自动执行与做"最新动态"时的新闻列表类似,
    可以使用trigger()方法来触发,因此可以写出类似的代码,代码如下所示:
    var adTimer;
    $('.ad').hover(function(){
       clearInterval(adTimer);
    },function(){
     
     adTime= setInterval(function(){
      //
     },3000);
    }).trigger("mouseleave");

     
    setInterval()方法的第1个参数中,需要实现以下功能。
    1.调用showImg(index)来显示广告效果
    2.每调用一次,给index 加1
    如果index的大小等于广告展示的总数量,那么重头开始 设置index为0
    adtimer = setInterval(function(){
     showImg(index);
     index++;
     if(index==len){
       index=0;
     }
    })
     

    最终完整代码如下:
     1 $(function(){
     2    var len = $(".num>li").length;
     3    var inex = 0;
     4    var adTimer;
     5    $(".num li").mouseover(function(){
     6     index = $(".num li").index(this);
     7      showimg(index);
     8    }).eq(0).mouseover();
     9  
    10    //滑入停止动画,滑出开始动画
    11    $(".ad").hover(function(){
    12        clearInterval(adTimer);
    13    },function(){
    14       adTimer = setInterval(function(){
    15         showImg(index);
    16     index++;
    17     if(index==len)
    18     {
    19       index=0;
    20     }
    21        })
    22     }).trigger("mouseleave");
    23 })

     
    //通过控制top来显示不同的幻灯片
    1 function showImg(index){
    2   var adHeight = $(.content_right .ad).height();
    3   $(".slider").stop(true,false).animate({top:-adHeight*index},1000);
    4   $(".num li").removeClass("on")
    5   .eq(index).addClass("on");
    6  
    7 }

     
    运行代码后,当光标滑入广告数字时,会显示不同的广告图片,当光标不碰到它时,广告图片
    会自动的切换。

    出处:http://www.cnblogs.com/liuyong/

    作者喜欢研究 Sql Server ,ASP.NET MVC , Jquery WCF 等技术,同时关心分布式架构的设计应用。转载请保留原文链接,谢谢!
  • 相关阅读:
    原生ajax与伪ajax
    ModelForm操作
    django学习笔记(四)
    django学习笔记(五)
    java.lang.NoClassDefFoundError: org/apache/poi/xwpf/usermodel/IRunBody异常
    springBoot项目mybatis中加入缓存
    Linux搭建MongoDB
    java搭建分布式项目
    Linux安装Apollo
    Foxmail公司邮箱配置
  • 原文地址:https://www.cnblogs.com/subtract/p/3624858.html
Copyright © 2011-2022 走看看