[原创]绝对详解:jQuery实现可控方向的图片滚动详解(二)

 [原创]绝对详解:jQuery实现可控方向的图片滚动详解(二),绝对原创转载注明出处

 本案例源码  jquery-img-scroll.zip

图片1.png

接上文,我们已经做过分析,如下:

1)图片要在某一个区域滚动,要有个范围,这个很简单就是用一些网页容器就行
2)根据我们得要求图片要进行滚动,如何能实现图片的精确滚动呢?
3)图片可以定时的滚动,如何能实现定时滚动呢?

下面我们做个简单分析:

1)图片要实现在某一个区域滚动,我们可以直接使用一个div来实现

如图:
1.jpg
2)如何实现图片的移动则是一个核心的问题,要想实现图片的滚动,可以有多种方法,
比如:让图片一张、一张的移动,通过改变图片的相对坐标来实现
另外一种方法是,把图片放到一个ul中,每个li是一个图片,这样通过动态的改变ul的坐标来实现。
如图:
1.jpg
3)关于图片的定时移动这个也很简单,我们可以通过js中的定时器就可以实现。

经过上述分析:我们来看源码如何实现:
Code:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <style>  
  5.  .scroll{  
  6.  position:relative;  
  7.  background-color:#CCCCCC;  
  8.  border:#666666 2px solid;  
  9.  width:400px;  
  10.  height:120px;  
  11.  overflow:hidden;  
  12.  }  
  13.  .items{  
  14.  position:absolute;  
  15.  margin:0px;  
  16.  padding:0px;  
  17.  list-style-type:none;  
  18.  width:9999em;  
  19.  }  
  20.  .items li{  
  21.  float:left;}  
  22. </style>  
  23. <script language="javascript" type="text/javascript" src="../include/jquery-1.5.1.min.js"></script>  
  24. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  25. <title>jQuery实现图片的滚动效果</title>  
  26. </head>  
  27.   
  28. <body>  
  29.  <div class="scroll">  
  30.      <ul class="items">  
  31.          <li><img src="../images/xyy1.gif" width="100" height="120" /></li>  
  32.       <li><img src="../images/htl.jpg" width="100" height="120" /></li>  
  33.       <li><img src="../images/xyy1.gif" width="100" height="120" /></li>  
  34.       <li><img src="../images/xyy2.gif" width="100" height="120" /></li>  
  35.       <li><img src="../images/htl2.gif" width="100" height="120" /></li>  
  36.       <li><img src="../images/xyy1.gif" width="100" height="120" /></li>  
  37.       <li><img src="../images/htl.jpg" width="100" height="120" /></li>  
  38.       <li><img src="../images/xyy1.gif" width="100" height="120" /></li>  
  39.       <li><img src="../images/xyy2.gif" width="100" height="120" /></li>  
  40.       <li><img src="../images/htl2.gif" width="100" height="120" /></li>  
  41.      </ul>  
  42.  </div>  
  43.  <button id="prev">向左</button>  
  44.  <button id="next">向右</button>  
  45. </body>  
  46. </html>  
  47. <script language="javascript" type="text/javascript">  
  48.   $(document).ready(function(){  
  49.      //定义位移变量  
  50.      var i=1;  
  51.      var pageSize=3;  
  52.      var nowPage=1;  
  53.      var page=Math.ceil($(".items>li").length/pageSize);  
  54.      var dir=true;  
  55.      var delay=3000;  
  56.      //处理鼠标单击向后事件  
  57.      $("#next").click(function(){  
  58.            //执行向后移动  
  59.            goNext();  
  60.       });  
  61.      //处理鼠标单击上一页事件  
  62.      $("#prev").click(function(){  
  63.            //执行向前移动  
  64.            goPrev();  
  65.      });  
  66.        
  67.      function goMove(location){  
  68.        //获得当前元素距父元素的相对位置  
  69.        var left=$(".items>li").eq(location).position().left;  
  70.        //带擦除效果的移动效果,left=-left表示没次把元素的位置移放置到起始位置  
  71.        $(".items").animate({left:-left},300,"swing");  
  72.        
  73.      }  
  74.        
  75.      //处理向下移动的函数  
  76.      function goNext(){  
  77.        //如果到了最后一页,则不可以点击按钮,并且改变自动滑动方向向前  
  78.        if(nowPage==page){dir=false;return;}  
  79.         //向后移动图片  
  80.         goMove(nowPage*pageSize);        
  81.         i++;  
  82.         nowPage++;  
  83.        
  84.      }  
  85.      //处理向前移动效果  
  86.      function goPrev(){  
  87.         //如果到了第一页,则不可以点击按钮,并且改变自动滑动方向向后  
  88.         if(nowPage==1){dir=true;return};  
  89.        
  90.          nowPage--;  
  91.          //向前移动图片  
  92.          goMove((nowPage-1)*pageSize);  
  93.           i--;  
  94.        
  95.      }  
  96.      //自动开始左右移动  
  97.      function goPlay1(){  
  98.          
  99.         if(dir){  
  100.           goNext();  
  101.           }else{  
  102.           goPrev();  
  103.         }  
  104.        
  105.      }  
  106.      //定时移动  
  107.      setInterval(goPlay1,3000);  
  108.        
  109.   });  
  110. </script>  

注意:1)要设置div和ul的样式,重点是之间的定位的问题
2)//获得当前元素距父元素的相对位置
var left=$(".items>li").eq(location).position().left;
通过position()获取ul相对于div的距离
3)eq(location)表示获取第location个元素,例子中是获取第 locattion 个图片
4)当点击“向前” “向后” 时怎么计算移动多少个位置,也即是怎样通过nowPage怎么计算locattion 的值
看下图:

1.jpg


经过上述分析,相信很多同学已经明白了吧?
源码下载: jquery-img-scroll.zip

 

 [原创地址]    [源码下载]    [更多原创,多多支持多]

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值