jQuery轮播图

需求:使图片能够进行轮播滚动,到最后一张图片时返回第一张(或第一张向前到最后一张)。
思路:在两端的图片前后添加一个虚拟镜像,当切换到镜像时,返回到所对应的真实图片。


方案
1.通过浮动或绝对定位使图片水平排列。
2.页面打开后将图片的第一张与最后一张的克隆镜像分别放到最后一张的后面和第一张的前面。

4556297-59bd3bb5a755a919.png
$imgCt.append($img.first().clone());
$imgCt.prepend($img.last().clone());

3.当点击翻页按钮时,将图片整体向左(右)移动图片宽度的距离,并且对当前显示的图片位置进行判断,当移动到镜像位置时将镜像位置替换为实际图片位置。

function prePage(len){
  if(isAnimate) return;
  isAnimate = true;
  $imgCt.animate({
    left: "+=" + len*imgWidth
  }, 150, function(){
    pageIndex -= len;
    if(pageIndex < 0){
      pageIndex = imgCount - 1;
      $imgCt.css("left", -imgCount*imgWidth);
    }
    console.log(pageIndex);
    setBullet();
    isAnimate = false;
  });
}

function nextPage(len){
  if(isAnimate) return;
  isAnimate = true;
  $imgCt.animate({
    left: "-=" + len*imgWidth
  }, 150, function(){
    pageIndex += len;
    if(pageIndex === imgCount){
      pageIndex = 0;
      $imgCt.css("left", -imgWidth);
    }
    console.log(pageIndex);
    setBullet();
    isAnimate = false;
  });
}

4.当图片移动时,在图片下方的页码也随之改变,并且对每一个页码绑定点击事件,当点击页码时,跳转到对应的图片。

$bullets.click(function(){
  var index = $(this).index();
  if(index > pageIndex){
    nextPage(index - pageIndex);
  } else if (index < pageIndex){
    prePage(pageIndex - index);
  }
});

5.优化:当翻页动画未完成时,多次点击翻页,会使程序出错。
每次点击时进行判断,动画完成前的点击无效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 需求:使图片能够进行轮播滚动,到最后一张图片时返回第一张(或第一张向前到最后一张)。思路:在两端的图片前后添加一个...
    杰伊_约翰阅读 2,540评论 0 0
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,050评论 3 119
  • 作者/Author:苏近之 地点/Address:中国杭州飞往中国台湾 时间/Time:2014年09月14日 简...
    IYANYU阅读 1,274评论 0 0
  • 肉也长了脸也圆了 肚子也胖了腿也粗了 这个春节似乎过得很充实 ​​​
    陈纯_0586阅读 1,189评论 0 0
  • 如果我爱慕一个人,我会尝试各种方法,去了解他的生活,成长,拉近彼此的距离。那么,是否会有爱慕我的人做到这些呢? 那...
    梵希七宝崽崽崽阅读 1,761评论 0 0