手机版图片轮播插件

(function($) {
  $.extend($.fn, {
    slider: function(obj) {
      this.each(function() {
        var $self = $(this);
        var dom = {
          "wrap": $self.find(".slider-list"),
          "item": $self.find(".slider-item"),
          "firstItem": $self.find(".slider-item").first(),
          "lastItem": $self.find(".slider-item").last(),
          "pagelist": null,
          "pageItem": null,
        };
        var settings = {
          "len": dom.item.length,
          "width": dom.wrap.width(),
          "startX": 0,
          "startY": 0,
          "index":  1,
          "distance": 0,
          "timer": null,
          "autoScroll": obj ? (obj.autoScroll ? true : false) : true,
          "infinite":  true
        };
        var funs = {
          init: function() {
            if (settings.len > 1) {
              funs.initUI();
              funs.bindEvent();
              if (settings.autoScroll) {
                settings.timer = setInterval(funs.autoAnimate, 3000);
              }
            }
          },
          initUI: function() {

              var cloneFisrt = dom.firstItem.clone();
              var cloneLast = dom.lastItem.clone();
              dom.wrap.append(cloneFisrt);
              cloneLast.insertBefore(dom.firstItem);

            funs.creatPage();
            dom.item = $self.find(".slider-item");
            settings.count = dom.item.length;
            settings.distance = settings.width / 3;

              dom.wrap.css("-webkit-transform", "translate3d(" + -settings.width + "px,0,0)");

          },
          creatPage: function() {
            var pagelist = ‘<div class="slider-page"><ul>‘;
            for (var i = 0; i < settings.len; i++) {
              if (i == 0) {
                pagelist += ‘<li class="active"></li>‘;
              } else {
                pagelist += ‘<li></li>‘;
              }
            }
            pagelist += ‘</ul></div>‘;
            $self.append(pagelist);
            dom.pagelist = $self.find(".slider-page");
            dom.pageItem = dom.pagelist.find("li");
          },
          bindEvent: function() {
            $self.off().on({
              "touchstart": function(e) {
                e.stopPropagation();
                clearInterval(settings.timer);
                settings.startX = e.touches ? e.touches[0].pageX : e.originalEvent.touches[0].pageX;
                settings.startY = e.touches ? e.touches[0].pageY : e.originalEvent.touches[0].pageY;
              },
              "touchmove": function(e) {
                e.stopPropagation();
                e.preventDefault();
                var curX = e.touches ? e.touches[0].pageX : e.originalEvent.touches[0].pageX;
                var curY = e.touches ? e.touches[0].pageY : e.originalEvent.touches[0].pageY;
                var moveX = curX - settings.startX;
                var moveY = curY - settings.startY;
                //避免禁用了下拉事件
                if (Math.abs(moveY) > Math.abs(moveX)) {
                  window.event.returnValue = true;
                }
                var x = -settings.index * settings.width + moveX;
                dom.wrap.css("-webkit-transform", "translate3d(" + x + "px,0,0)");
              },
              "touchend": function(e) {
                e.stopPropagation();
                var curX = e.changedTouches ? e.changedTouches[0].pageX : e.originalEvent.changedTouches[0].pageX;
                var moveX = curX - settings.startX;
                if (Math.abs(moveX) >= settings.distance) {
                  settings.index = settings.index - Math.abs(moveX) / moveX; //判断是向左还是向右
                }
                if (settings.index >= settings.count - 1) {
                  settings.index = settings.count - 1;
                }
                if (settings.index <= 0) {
                  settings.index = 0;
                }
                funs.animate();
                if (settings.autoScroll) {
                  settings.timer = setInterval(funs.autoAnimate, 3000);
                }
              },
              "touchcancel": function(e) {
                dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
              },
              "webkitTransitionEnd": function(e) {
                e.stopPropagation();
                e.preventDefault();
                dom.wrap.removeClass("transitionable");

                  if (settings.index <= 0) {
                    settings.index = settings.count - 2;
                  }
                  if (settings.index >= settings.count - 1) {
                    settings.index = 1;
                  }

                var itemIndex = settings.infinite ? settings.index - 1 : settings.index;
                dom.pageItem.removeClass("active");
                dom.pageItem.eq("" + itemIndex + "").addClass("active");
                dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
              }
            });
            $(window).on({
              "resize": function() {
                funs.adjustPos();
              },
              "orientationchange": function() {
                funs.adjustPos();
              }
            })
          },
          adjustPos: function() {
            settings.width = dom.wrap.width();
            settings.distance = settings.width / 3;
            dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
          },
          animate: function() {
            dom.wrap.addClass("transitionable");
            dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
          },
          autoAnimate: function() {
            if (settings.width > 0) {
              settings.index++;
              funs.animate();
            }
          }
        };

        funs.init();
      });
      return this;
    }
  });
})(window.jQuery);

  

时间: 2024-11-03 01:27:21

手机版图片轮播插件的相关文章

图片轮播插件FlexSlider

推荐一款万能图片轮播插件FlexSlider 先来看一下都能做出什么效果吧 轮播图方向控制按钮和底部的焦点按钮都是可以控制显示和隐藏,最厉害的一点是该插件支持手机触屏 具体参数设置当然还是github更权威https://github.com/woothemes/FlexSlider/ 友情提示:在github上下载的demo由于用的是google的CDN,由于google被墙可能导致无法运行,建议更改jQuery的调用地址 最后看一下支付宝官方网站上的对该插件的应用效果图

jquery实现轮播插件

这几天用jquery写了两个轮播的插件,功能很简单.第一次尝试写插件,有很多不足的地方,代码如下: 注:图片链接请替换掉,配置信息必须加上图片width和height. <!DOCTYPE html> <html ng-app="myApp"> <head lang="en"> <meta charset="UTF-8"> <link rel="stylesheet" hr

Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示

用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色:? 16个独特的过渡效果? 简洁和有效的标记? 加载参数设置?

JQuery插件之图片轮播插件–slideBox

来源:http://www.ido321.com/852.html 今天偶然发现了一个比較好用的图片轮播插件-slideBox 先看看效果:http://slidebox.sinaapp.com/ 代码例如以下 1: <!doctype html> 2: <html> 3: <head> 4: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

图片轮播插件

刚买了司徒大大的<Javascript框架设计>,准备开始研读.打算在读之前先随便写个图片轮播插件,到读完这本书再来看看现在的自己有多菜....... 顺便做图片轮播的时候用美女照片真影响效率..... 上代码! 先是如何使用: html: <div id='outer' style='width:591px;height:862px;overflow:hidden;margin-left:100px;'> <ul id='try-slide' style='list-sty

js面向对象实现图片轮播插件

这个demo的学习过程很值得记录下来. 前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件: http://www.codefans.net/jscss/code/3327.shtml 功能:新建一个实例就是一个图片轮播,可以新建多个,但是实例与实例之间是干扰的. 过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就可以了.自己就死磕地先写了原生,再改为面向对象. 写原生的时候,遇到的问题: 不知道怎么样停止计时器:clearInterval.cl

手机端图片轮播插件

官网:http://bxslider.com/ 能自动适应屏幕大小,滑动图片 引用文件:query.bxslider.css和jquery.bxslider.min.js   手机端图片轮播插件

KinSlideshow焦点图轮播插件

KinSlideshow默认设置效果代码: *焦点图显示的标题为 img 中 alt 属性中的文字 *当只有一张图片时不显示按钮,但也会有无缝切换效果 * jquery 1.7.2以上版本 jvascript: $(function(){ $("#KinSlideshow").KinSlideshow(); }) HTML: <div id="KinSlideshow" style="visibility:hidden;"> <

Bootstrap 轮播插件

一.轮播 //基本实例. <div id="myCarousel" class="carousel slide"> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data