zoukankan      html  css  js  c++  java
  • jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据

    1、针对浏览器整个窗口滚动 主要代码:

     1   <script type="text/javascript">
     2         var pageNum = 1;
     3         function GetProductListPageFun() {  //请求获取数据
     4 
     5         }
     6         $(window).scroll(function () {  //分页
     7             if ($(window).scrollTop() + $(window).height() == $(document).height()) { //滚动到底部时
     8                 pageNum += 1;
     9                 GetProductListPageFun();
    10             }
    11         });
    12     </script>

     2、一个页面div 内 的滚动条下拉 到底部,触发事件(加载更多内容) 完整代码(注意:div 必须出现滚动条 , 此方法才有效):

     1 <!DOCTYPE=html>
     2 <html>
     3 <head>
     4     <script src="../Js/jquery-1.9.1.min.js" type="text/javascript"></script>
     5 </head>
     6 <body>
     7     <div>
     8         测试 div 滚动条下拉掉浏览器底部加载</div>
     9     <div class="scrollDiv" style="height: 500px; overflow: auto;">
    10         <div class="childDiv" style='border: 1px solid Black; margin-top: 20px; color: Green; height: 600px'>
    11     </div>
    12     </div>
    13 </body>
    14 <script type="text/javascript">
    15     //关键代码  注意:div 必须出现滚动条 , 此方法才有效
    16     $(document).ready(function () {
    17         $(".scrollDiv").unbind("scroll").on("scroll", function (e) {  //注意:含有css类名为:scrollDiv 的div 要出现 滚动条 此函数(scroll)才会触发
    18             var sum = this.scrollHeight;  //滚动条距顶部距离(页面超出窗口的高度)
    19             var $obj = $(this);
    20             if (sum <= $obj.scrollTop() + $obj.height()) {  //判断滚动条是否 到达了 底部 , $obj.scrollTop():滚动条距顶部距离(页面超出窗口的高度) ,$obj.height():当前(div)滚动窗口的高度
    21                 //div 的滚动条 滚动到浏览器底部 时 需要处理的逻辑
    22                 //$(".scrollDiv").append($(".childDiv").clone());
    23                 console.log("滚动条到达浏览器底部");
    24                 alert("滚动条到达浏览器底部");
    25             }
    26         });
    27     });
    28 </script>
    29 </html>
    View Code

    3、一个页面 有多个div(tab)可以 切换 ,而且 div 内 的滚动条下拉 到底部,触发事件(加载更多内容) 完整代码(注意:div 必须出现滚动条 , 此方法才有效):

       1 <!DOCTYPE html>
       2 <html>
       3 <head>
       4     <title>测试 div 滚动下拉加载</title>
       5     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
       6     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       7     <meta name="apple-mobile-web-app-capable" content="yes">
       8     <meta name="apple-mobile-web-app-status-bar-style" content="black">
       9     <meta content="telephone=no" name="format-detection">
      10     <meta content="on" http-equiv="x-dns-prefetch-control">
      11     <script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script>
      12     <script type="text/javascript">
      13         //关键代码  注意:div 必须出现滚动条 , 此方法才有效
      14         $(document).ready(function () {
      15             $(".content-slide").height(parseFloat($(window).height()) - parseFloat($(".commenthead").height()) - 20);   //设置高度让div 出现滚动条
      16             $(".content-slide").unbind("scroll").on("scroll", function (e) {  //注意:含有css类名为: content-slide 的div 要出现 滚动条 此函数(scroll)才会触发
      17                 var sum = this.scrollHeight;  //滚动条距顶部距离(页面超出窗口的高度)
      18                 var $obj = $(this);
      19                 if (sum <= $obj.scrollTop() + $obj.height()) {  //判断滚动条是否 到达了 底部 , $obj.scrollTop():滚动条距顶部距离(页面超出窗口的高度) ,$obj.height():当前(div)滚动窗口的高度
      20                     //div 的滚动条 滚动到浏览器底部 时 需要处理的逻辑
      21                     console.log("div_" + $(this).attr("status") + "滚动条到达浏览器底部");
      22                     alert("div_" + $obj.attr("status") + "滚动条到达浏览器底部");
      23                 }
      24             });
      25         });
      26     </script>
      27 </head>
      28 <body>
      29     <header class="commenthead whiteback">
      30             网页头部:(下拉 加载 更多)
      31         </header>
      32     <article class="commentWrap nonebottom">
      33             <div class="tabs">
      34                 <a href="JavaScript:;" class="active">div_1</a>
      35                 <a href="JavaScript:;" >div_2</a>
      36                 <a href="JavaScript:;" >div_3</a>
      37                 <a href="JavaScript:;" >div_4</a>
      38             </div>
      39             <div class="swiper-container">
      40                 <div class="swiper-wrapper" >
      41                     <div class="swiper-slide swiper-slide-visible swiper-slide-active">
      42                         <div class="content-slide tab1" status="1"   style="height:200px;overflow:auto;"  >
      43                             <div class="order_li">
      44                             <img src="../Images/0.jpg" />
      45                             </div>
      46                             <div class="order_li">
      47                                 <img src="../Images/1.jpg" />
      48                             </div>
      49                             <div class="order_li">
      50                                 <img src="../Images/2.jpg" />
      51                             </div>
      52                         </div>
      53                     </div>
      54                     <div class="swiper-slide" >
      55                         <div class="content-slide"  status="2"    style="height:200px;overflow:auto;" >
      56                             <div class="order_li">
      57                                 <img src="../Images/3.jpg" />
      58                             </div>
      59                             <div class="order_li">
      60                                 <img src="../Images/4.jpg" />
      61                             </div>
      62                             <div class="order_li">
      63                                 <img src="../Images/5.jpg" />
      64                             </div>
      65                         </div>
      66                     </div>
      67                     <div class="swiper-slide"  >
      68                         <div class="content-slide"  status="3"    style="height:200px;overflow:auto;" >
      69                             <div class="order_li">
      70                             <img src="../Images/0.jpg" />
      71                             </div>
      72                             <div class="order_li">
      73                                 <img src="../Images/1.jpg" />
      74                             </div>
      75                             <div class="order_li">
      76                                 <img src="../Images/2.jpg" />
      77                             </div>
      78                         </div>
      79                     </div>
      80                     <div class="swiper-slide" >
      81                         <div class="content-slide"   status="4"   style="height:200px;overflow:auto;" >
      82                             <div class="order_li">
      83                                 <img src="../Images/3.jpg" />
      84                             </div>
      85                             <div class="order_li">
      86                                 <img src="../Images/5.jpg" />
      87                             </div>
      88                             <div class="order_li">
      89                                 <img src="../Images/4.jpg" />
      90                             </div>                       
      91                         </div>
      92                     </div>
      93                 </div>
      94             </div>
      95         </article>
      96     <style type="text/css">
      97         a
      98         {
      99             color: #333;
     100             text-decoration: none;
     101         }
     102         .tabs
     103         {
     104             height: 35px;
     105             background: #fff;
     106             border-bottom: #F0F2F5 thin solid;
     107             box-sizing: border-box;
     108             display: block;
     109             width: 100%;
     110         }
     111         .tabs a
     112         {
     113             display: inline-block;
     114             float: left;
     115             width: 20%;
     116             margin: 0 2.5%;
     117             text-align: center;
     118             line-height: 35px;
     119             font-size: 14px; /*padding: 0 10px;*/
     120             box-sizing: border-box;
     121         }
     122         .tabs a.active
     123         {
     124             border-bottom: #E23030 2px solid;
     125             color: #FF5500;
     126             box-sizing: border-box;
     127         }
     128         .swiper-container
     129         {
     130             min-height: 400px;
     131             width: 100%;
     132             padding-bottom: 20px;
     133         }
     134         .swiper-slide
     135         {
     136             /*height: 325px;*/
     137             width: 100%; /*background: none;*/ /*color: #fff;*/
     138         }
     139         .swiper-container
     140         {
     141             margin: 0 auto;
     142             position: relative;
     143             overflow: hidden;
     144             -webkit-backface-visibility: hidden;
     145             -moz-backface-visibility: hidden;
     146             -ms-backface-visibility: hidden;
     147             -o-backface-visibility: hidden;
     148             backface-visibility: hidden; /* Fix of Webkit flickering */
     149             z-index: 1;
     150         }
     151         .swiper-wrapper
     152         {
     153             position: relative;
     154             width: 100%;
     155             -webkit-transition-property: -webkit-transform, left, top;
     156             -webkit-transition-duration: 0s;
     157             -webkit-transform: translate3d(0px, 0, 0);
     158             -webkit-transition-timing-function: ease;
     159             -moz-transition-property: -moz-transform, left, top;
     160             -moz-transition-duration: 0s;
     161             -moz-transform: translate3d(0px, 0, 0);
     162             -moz-transition-timing-function: ease;
     163             -o-transition-property: -o-transform, left, top;
     164             -o-transition-duration: 0s;
     165             -o-transform: translate3d(0px, 0, 0);
     166             -o-transition-timing-function: ease;
     167             -o-transform: translate(0px, 0px);
     168             -ms-transition-property: -ms-transform, left, top;
     169             -ms-transition-duration: 0s;
     170             -ms-transform: translate3d(0px, 0, 0);
     171             -ms-transition-timing-function: ease;
     172             transition-property: transform, left, top;
     173             transition-duration: 0s;
     174             transform: translate3d(0px, 0, 0);
     175             transition-timing-function: ease;
     176             -webkit-box-sizing: content-box;
     177             -moz-box-sizing: content-box;
     178             box-sizing: content-box;
     179         }
     180         .swiper-free-mode > .swiper-wrapper
     181         {
     182             -webkit-transition-timing-function: ease-out;
     183             -moz-transition-timing-function: ease-out;
     184             -ms-transition-timing-function: ease-out;
     185             -o-transition-timing-function: ease-out;
     186             transition-timing-function: ease-out;
     187             margin: 0 auto;
     188         }
     189         .swiper-slide
     190         {
     191             float: left;
     192             -webkit-box-sizing: content-box;
     193             -moz-box-sizing: content-box; /*box-sizing: content-box;*/
     194         }
     195         .order_li
     196         {
     197             margin-bottom: 7px;
     198         }
     199         .order_li .cart_main_li
     200         {
     201             background: none !important;
     202             margin-top: 0px;
     203             padding-top: 3px;
     204             padding-bottom: 3px;
     205         }
     206         .order_li .cart_main_right
     207         {
     208             width: 60%;
     209         }
     210         .order_li .cart_main_left
     211         {
     212             text-align: center;
     213             width: 15%;
     214             text-align: right;
     215             padding-left: 5px;
     216             box-sizing: border-box;
     217         }
     218         .order_li > p
     219         {
     220             line-height: 32px;
     221             background: #fff;
     222             height: 32px;
     223             text-align: right;
     224             padding: 0 10px;
     225         }
     226         .order_li > p:first-of-type
     227         {
     228             color: #FF5500;
     229         }
     230         .order_day
     231         {
     232             width: 60px;
     233             text-align: center;
     234             background: #E23030;
     235             color: #fff;
     236             line-height: 20px;
     237         }
     238         .order_li p button
     239         {
     240             border: #ccc thin solid;
     241             background: #fff;
     242             height: 28px;
     243             padding: 0 10px;
     244         }
     245         .order_li .cart_main_left .old_price
     246         {
     247             text-decoration: line-through;
     248             color: #CCCCCC;
     249         }
     250         .order_null
     251         {
     252             text-align: center;
     253             margin: 70px 0;
     254         }
     255         .order_null img
     256         {
     257             width: 100px;
     258         }
     259         .order_null p:first-of-type
     260         {
     261             margin-top: 20px;
     262             font-size: 16px;
     263             color: #000;
     264         }
     265         /***************订单详情********************/.orderdetail
     266         {
     267             padding: 10px;
     268             background: #fff;
     269             line-height: 22px;
     270             margin-bottom: 8px;
     271         }
     272         .orderdetail_add
     273         {
     274             padding-left: 20px;
     275             background: url(../img/52.png) no-repeat left;
     276             background-size: 15px;
     277         }
     278         .orderdetail_mess
     279         {
     280             padding: 10px;
     281             background: #fff;
     282             line-height: 18px;
     283         }
     284         .otherfoot .order_foot
     285         {
     286             text-align: left;
     287             float: left;
     288             width: 100px;
     289             padding: 5px;
     290         }
     291         .order_foot_bt button
     292         {
     293             border: #ccc thin solid;
     294             background: #fff;
     295             height: 35px;
     296             margin: 7px 10px 5px 0;
     297             padding: 0 12px;
     298         }
     299     </style>
     300     <script type="text/javascript">
     301         /*
     302         * Swiper 2.7.0
     303         * Mobile touch slider and framework with hardware accelerated transitions
     304         *
     305         * http://www.idangero.us/sliders/swiper/
     306         *
     307         * Copyright 2010-2014, Vladimir Kharlampidi
     308         * The iDangero.us
     309         * http://www.idangero.us/
     310         *
     311         * Licensed under GPL & MIT
     312         *
     313         * Released on: August 30, 2014
     314         */
     315         var Swiper = function (a, b) {
     316             "use strict";
     317 
     318             function c(a, b) {
     319                 return document.querySelectorAll ? (b || document).querySelectorAll(a) : jQuery(a, b)
     320             }
     321 
     322             function d(a) {
     323                 return "[object Array]" === Object.prototype.toString.apply(a) ? !0 : !1
     324             }
     325 
     326             function e() {
     327                 var a = F - I;
     328                 return b.freeMode && (a = F - I), b.slidesPerView > C.slides.length && !b.centeredSlides && (a = 0), 0 > a && (a = 0), a
     329             }
     330 
     331             function f() {
     332                 function a(a) {
     333                     var c = new Image;
     334                     c.onload = function () {
     335                         "undefined" != typeof C && null !== C && (void 0 !== C.imagesLoaded && C.imagesLoaded++, C.imagesLoaded === C.imagesToLoad.length && (C.reInit(), b.onImagesReady && C.fireCallback(b.onImagesReady, C)))
     336                     }, c.src = a
     337                 }
     338                 var d = C.h.addEventListener,
     339             e = "wrapper" === b.eventTarget ? C.wrapper : C.container;
     340                 if (C.browser.ie10 || C.browser.ie11 ? (d(e, C.touchEvents.touchStart, p), d(document, C.touchEvents.touchMove, q), d(document, C.touchEvents.touchEnd, r)) : (C.support.touch && (d(e, "touchstart", p), d(e, "touchmove", q), d(e, "touchend", r)), b.simulateTouch && (d(e, "mousedown", p), d(document, "mousemove", q), d(document, "mouseup", r))), b.autoResize && d(window, "resize", C.resizeFix), g(), C._wheelEvent = !1, b.mousewheelControl) {
     341                     if (void 0 !== document.onmousewheel && (C._wheelEvent = "mousewheel"), !C._wheelEvent) try {
     342                         new WheelEvent("wheel"), C._wheelEvent = "wheel"
     343                     } catch (f) { }
     344                     C._wheelEvent || (C._wheelEvent = "DOMMouseScroll"), C._wheelEvent && d(C.container, C._wheelEvent, j)
     345                 }
     346                 if (b.keyboardControl && d(document, "keydown", i), b.updateOnImagesReady) {
     347                     C.imagesToLoad = c("img", C.container);
     348                     for (var h = 0; h < C.imagesToLoad.length; h++) a(C.imagesToLoad[h].getAttribute("src"))
     349                 }
     350             }
     351 
     352             function g() {
     353                 var a, d = C.h.addEventListener;
     354                 if (b.preventLinks) {
     355                     var e = c("a", C.container);
     356                     for (a = 0; a < e.length; a++) d(e[a], "click", n)
     357                 }
     358                 if (b.releaseFormElements) {
     359                     var f = c("input, textarea, select", C.container);
     360                     for (a = 0; a < f.length; a++) d(f[a], C.touchEvents.touchStart, o, !0)
     361                 }
     362                 if (b.onSlideClick)
     363                     for (a = 0; a < C.slides.length; a++) d(C.slides[a], "click", k);
     364                 if (b.onSlideTouch)
     365                     for (a = 0; a < C.slides.length; a++) d(C.slides[a], C.touchEvents.touchStart, l)
     366             }
     367 
     368             function h() {
     369                 var a, d = C.h.removeEventListener;
     370                 if (b.onSlideClick)
     371                     for (a = 0; a < C.slides.length; a++) d(C.slides[a], "click", k);
     372                 if (b.onSlideTouch)
     373                     for (a = 0; a < C.slides.length; a++) d(C.slides[a], C.touchEvents.touchStart, l);
     374                 if (b.releaseFormElements) {
     375                     var e = c("input, textarea, select", C.container);
     376                     for (a = 0; a < e.length; a++) d(e[a], C.touchEvents.touchStart, o, !0)
     377                 }
     378                 if (b.preventLinks) {
     379                     var f = c("a", C.container);
     380                     for (a = 0; a < f.length; a++) d(f[a], "click", n)
     381                 }
     382             }
     383 
     384             function i(a) {
     385                 var b = a.keyCode || a.charCode;
     386                 if (!(a.shiftKey || a.altKey || a.ctrlKey || a.metaKey)) {
     387                     if (37 === b || 39 === b || 38 === b || 40 === b) {
     388                         for (var c = !1, d = C.h.getOffset(C.container), e = C.h.windowScroll().left, f = C.h.windowScroll().top, g = C.h.windowWidth(), h = C.h.windowHeight(), i = [
     389                         [d.left, d.top],
     390                         [d.left + C.width, d.top],
     391                         [d.left, d.top + C.height],
     392                         [d.left + C.width, d.top + C.height]
     393                     ], j = 0; j < i.length; j++) {
     394                             var k = i[j];
     395                             k[0] >= e && k[0] <= e + g && k[1] >= f && k[1] <= f + h && (c = !0)
     396                         }
     397                         if (!c) return
     398                     }
     399                     M ? ((37 === b || 39 === b) && (a.preventDefault ? a.preventDefault() : a.returnValue = !1), 39 === b && C.swipeNext(), 37 === b && C.swipePrev()) : ((38 === b || 40 === b) && (a.preventDefault ? a.preventDefault() : a.returnValue = !1), 40 === b && C.swipeNext(), 38 === b && C.swipePrev())
     400                 }
     401             }
     402 
     403             function j(a) {
     404                 var c = C._wheelEvent,
     405             d = 0;
     406                 if (a.detail) d = -a.detail;
     407                 else if ("mousewheel" === c)
     408                     if (b.mousewheelControlForceToAxis)
     409                         if (M) {
     410                             if (!(Math.abs(a.wheelDeltaX) > Math.abs(a.wheelDeltaY))) return;
     411                             d = a.wheelDeltaX
     412                         } else {
     413                             if (!(Math.abs(a.wheelDeltaY) > Math.abs(a.wheelDeltaX))) return;
     414                             d = a.wheelDeltaY
     415                         } else d = a.wheelDelta;
     416                 else if ("DOMMouseScroll" === c) d = -a.detail;
     417                 else if ("wheel" === c)
     418                     if (b.mousewheelControlForceToAxis)
     419                         if (M) {
     420                             if (!(Math.abs(a.deltaX) > Math.abs(a.deltaY))) return;
     421                             d = -a.deltaX
     422                         } else {
     423                             if (!(Math.abs(a.deltaY) > Math.abs(a.deltaX))) return;
     424                             d = -a.deltaY
     425                         } else d = Math.abs(a.deltaX) > Math.abs(a.deltaY) ? -a.deltaX : -a.deltaY;
     426                 if (b.freeMode) {
     427                     var f = C.getWrapperTranslate() + d;
     428                     if (f > 0 && (f = 0), f < -e() && (f = -e()), C.setWrapperTransition(0), C.setWrapperTranslate(f), C.updateActiveSlide(f), 0 === f || f === -e()) return
     429                 } else (new Date).getTime() - U > 60 && (0 > d ? C.swipeNext() : C.swipePrev()), U = (new Date).getTime();
     430                 return b.autoplay && C.stopAutoplay(!0), a.preventDefault ? a.preventDefault() : a.returnValue = !1, !1
     431             }
     432 
     433             function k(a) {
     434                 C.allowSlideClick && (m(a), C.fireCallback(b.onSlideClick, C, a))
     435             }
     436 
     437             function l(a) {
     438                 m(a), C.fireCallback(b.onSlideTouch, C, a)
     439             }
     440 
     441             function m(a) {
     442                 if (a.currentTarget) C.clickedSlide = a.currentTarget;
     443                 else {
     444                     var c = a.srcElement;
     445                     do {
     446                         if (c.className.indexOf(b.slideClass) > -1) break;
     447                         c = c.parentNode
     448                     } while (c);
     449                     C.clickedSlide = c
     450                 }
     451                 C.clickedSlideIndex = C.slides.indexOf(C.clickedSlide), C.clickedSlideLoopIndex = C.clickedSlideIndex - (C.loopedSlides || 0)
     452             }
     453 
     454             function n(a) {
     455                 return C.allowLinks ? void 0 : (a.preventDefault ? a.preventDefault() : a.returnValue = !1, b.preventLinksPropagation && "stopPropagation" in a && a.stopPropagation(), !1)
     456             }
     457 
     458             function o(a) {
     459                 return a.stopPropagation ? a.stopPropagation() : a.returnValue = !1, !1
     460             }
     461 
     462             function p(a) {
     463                 if (b.preventLinks && (C.allowLinks = !0), C.isTouched || b.onlyExternal) return !1;
     464                 var c = a.target || a.srcElement;
     465                 document.activeElement && document.activeElement !== c && document.activeElement.blur();
     466                 var d = "input select textarea".split(" ");
     467                 if (b.noSwiping && c && s(c)) return !1;
     468                 if ($ = !1, C.isTouched = !0, Z = "touchstart" === a.type, !Z && "which" in a && 3 === a.which) return !1;
     469                 if (!Z || 1 === a.targetTouches.length) {
     470                     C.callPlugins("onTouchStartBegin"), !Z && !C.isAndroid && d.indexOf(c.tagName.toLowerCase()) < 0 && (a.preventDefault ? a.preventDefault() : a.returnValue = !1);
     471                     var e = Z ? a.targetTouches[0].pageX : a.pageX || a.clientX,
     472                 f = Z ? a.targetTouches[0].pageY : a.pageY || a.clientY;
     473                     C.touches.startX = C.touches.currentX = e, C.touches.startY = C.touches.currentY = f, C.touches.start = C.touches.current = M ? e : f, C.setWrapperTransition(0), C.positions.start = C.positions.current = C.getWrapperTranslate(), C.setWrapperTranslate(C.positions.start), C.times.start = (new Date).getTime(), H = void 0, b.moveStartThreshold > 0 && (W = !1), b.onTouchStart && C.fireCallback(b.onTouchStart, C, a), C.callPlugins("onTouchStartEnd")
     474                 }
     475             }
     476 
     477             function q(a) {
     478                 if (C.isTouched && !b.onlyExternal && (!Z || "mousemove" !== a.type)) {
     479                     var c = Z ? a.targetTouches[0].pageX : a.pageX || a.clientX,
     480                 d = Z ? a.targetTouches[0].pageY : a.pageY || a.clientY;
     481                     if ("undefined" == typeof H && M && (H = !!(H || Math.abs(d - C.touches.startY) > Math.abs(c - C.touches.startX))), "undefined" != typeof H || M || (H = !!(H || Math.abs(d - C.touches.startY) < Math.abs(c - C.touches.startX))), H) return void (C.isTouched = !1);
     482                     if (M) {
     483                         if (!b.swipeToNext && c < C.touches.startX || !b.swipeToPrev && c > C.touches.startX) return
     484                     } else if (!b.swipeToNext && d < C.touches.startY || !b.swipeToPrev && d > C.touches.startY) return;
     485                     if (a.assignedToSwiper) return void (C.isTouched = !1);
     486                     if (a.assignedToSwiper = !0, b.preventLinks && (C.allowLinks = !1), b.onSlideClick && (C.allowSlideClick = !1), b.autoplay && C.stopAutoplay(!0), !Z || 1 === a.touches.length) {
     487                         if (C.isMoved || (C.callPlugins("onTouchMoveStart"), b.loop && (C.fixLoop(), C.positions.start = C.getWrapperTranslate()), b.onTouchMoveStart && C.fireCallback(b.onTouchMoveStart, C)), C.isMoved = !0, a.preventDefault ? a.preventDefault() : a.returnValue = !1, C.touches.current = M ? c : d, C.positions.current = (C.touches.current - C.touches.start) * b.touchRatio + C.positions.start, C.positions.current > 0 && b.onResistanceBefore && C.fireCallback(b.onResistanceBefore, C, C.positions.current), C.positions.current < -e() && b.onResistanceAfter && C.fireCallback(b.onResistanceAfter, C, Math.abs(C.positions.current + e())), b.resistance && "100%" !== b.resistance) {
     488                             var f;
     489                             if (C.positions.current > 0 && (f = 1 - C.positions.current / I / 2, C.positions.current = .5 > f ? I / 2 : C.positions.current * f), C.positions.current < -e()) {
     490                                 var g = (C.touches.current - C.touches.start) * b.touchRatio + (e() + C.positions.start);
     491                                 f = (I + g) / I;
     492                                 var h = C.positions.current - g * (1 - f) / 2,
     493                             i = -e() - I / 2;
     494                                 C.positions.current = i > h || 0 >= f ? i : h
     495                             }
     496                         }
     497                         if (b.resistance && "100%" === b.resistance && (C.positions.current > 0 && (!b.freeMode || b.freeModeFluid) && (C.positions.current = 0), C.positions.current < -e() && (!b.freeMode || b.freeModeFluid) && (C.positions.current = -e())), !b.followFinger) return;
     498                         if (b.moveStartThreshold)
     499                             if (Math.abs(C.touches.current - C.touches.start) > b.moveStartThreshold || W) {
     500                                 if (!W) return W = !0, void (C.touches.start = C.touches.current);
     501                                 C.setWrapperTranslate(C.positions.current)
     502                             } else C.positions.current = C.positions.start;
     503                         else C.setWrapperTranslate(C.positions.current);
     504                         return (b.freeMode || b.watchActiveIndex) && C.updateActiveSlide(C.positions.current), b.grabCursor && (C.container.style.cursor = "move", C.container.style.cursor = "grabbing", C.container.style.cursor = "-moz-grabbin", C.container.style.cursor = "-webkit-grabbing"), X || (X = C.touches.current), Y || (Y = (new Date).getTime()), C.velocity = (C.touches.current - X) / ((new Date).getTime() - Y) / 2, Math.abs(C.touches.current - X) < 2 && (C.velocity = 0), X = C.touches.current, Y = (new Date).getTime(), C.callPlugins("onTouchMoveEnd"), b.onTouchMove && C.fireCallback(b.onTouchMove, C, a), !1
     505                     }
     506                 }
     507             }
     508 
     509             function r(a) {
     510                 if (H && C.swipeReset(), !b.onlyExternal && C.isTouched) {
     511                     C.isTouched = !1, b.grabCursor && (C.container.style.cursor = "move", C.container.style.cursor = "grab", C.container.style.cursor = "-moz-grab", C.container.style.cursor = "-webkit-grab"), C.positions.current || 0 === C.positions.current || (C.positions.current = C.positions.start), b.followFinger && C.setWrapperTranslate(C.positions.current), C.times.end = (new Date).getTime(), C.touches.diff = C.touches.current - C.touches.start, C.touches.abs = Math.abs(C.touches.diff), C.positions.diff = C.positions.current - C.positions.start, C.positions.abs = Math.abs(C.positions.diff);
     512                     var c = C.positions.diff,
     513                 d = C.positions.abs,
     514                 f = C.times.end - C.times.start;
     515                     5 > d && 300 > f && C.allowLinks === !1 && (b.freeMode || 0 === d || C.swipeReset(), b.preventLinks && (C.allowLinks = !0), b.onSlideClick && (C.allowSlideClick = !0)), setTimeout(function () {
     516                         "undefined" != typeof C && null !== C && (b.preventLinks && (C.allowLinks = !0), b.onSlideClick && (C.allowSlideClick = !0))
     517                     }, 100);
     518                     var g = e();
     519                     if (!C.isMoved && b.freeMode) return C.isMoved = !1, b.onTouchEnd && C.fireCallback(b.onTouchEnd, C, a), void C.callPlugins("onTouchEnd");
     520                     if (!C.isMoved || C.positions.current > 0 || C.positions.current < -g) return C.swipeReset(), b.onTouchEnd && C.fireCallback(b.onTouchEnd, C, a), void C.callPlugins("onTouchEnd");
     521                     if (C.isMoved = !1, b.freeMode) {
     522                         if (b.freeModeFluid) {
     523                             var h, i = 1e3 * b.momentumRatio,
     524                         j = C.velocity * i,
     525                         k = C.positions.current + j,
     526                         l = !1,
     527                         m = 20 * Math.abs(C.velocity) * b.momentumBounceRatio; -g > k && (b.momentumBounce && C.support.transitions ? (-m > k + g && (k = -g - m), h = -g, l = !0, $ = !0) : k = -g), k > 0 && (b.momentumBounce && C.support.transitions ? (k > m && (k = m), h = 0, l = !0, $ = !0) : k = 0), 0 !== C.velocity && (i = Math.abs((k - C.positions.current) / C.velocity)), C.setWrapperTranslate(k), C.setWrapperTransition(i), b.momentumBounce && l && C.wrapperTransitionEnd(function () {
     528                             $ && (b.onMomentumBounce && C.fireCallback(b.onMomentumBounce, C), C.callPlugins("onMomentumBounce"), C.setWrapperTranslate(h), C.setWrapperTransition(300))
     529                         }), C.updateActiveSlide(k)
     530                         }
     531                         return (!b.freeModeFluid || f >= 300) && C.updateActiveSlide(C.positions.current), b.onTouchEnd && C.fireCallback(b.onTouchEnd, C, a), void C.callPlugins("onTouchEnd")
     532                     }
     533                     G = 0 > c ? "toNext" : "toPrev", "toNext" === G && 300 >= f && (30 > d || !b.shortSwipes ? C.swipeReset() : C.swipeNext(!0)), "toPrev" === G && 300 >= f && (30 > d || !b.shortSwipes ? C.swipeReset() : C.swipePrev(!0));
     534                     var n = 0;
     535                     if ("auto" === b.slidesPerView) {
     536                         for (var o, p = Math.abs(C.getWrapperTranslate()), q = 0, r = 0; r < C.slides.length; r++)
     537                             if (o = M ? C.slides[r].getWidth(!0, b.roundLengths) : C.slides[r].getHeight(!0, b.roundLengths), q += o, q > p) {
     538                                 n = o;
     539                                 break
     540                             }
     541                         n > I && (n = I)
     542                     } else n = E * b.slidesPerView;
     543                     "toNext" === G && f > 300 && (d >= n * b.longSwipesRatio ? C.swipeNext(!0) : C.swipeReset()), "toPrev" === G && f > 300 && (d >= n * b.longSwipesRatio ? C.swipePrev(!0) : C.swipeReset()), b.onTouchEnd && C.fireCallback(b.onTouchEnd, C, a), C.callPlugins("onTouchEnd")
     544                 }
     545             }
     546 
     547             function s(a) {
     548                 var c = !1;
     549                 do a.className.indexOf(b.noSwipingClass) > -1 && (c = !0), a = a.parentElement; while (!c && a.parentElement && -1 === a.className.indexOf(b.wrapperClass));
     550                 return !c && a.className.indexOf(b.wrapperClass) > -1 && a.className.indexOf(b.noSwipingClass) > -1 && (c = !0), c
     551             }
     552 
     553             function t(a, b) {
     554                 var c, d = document.createElement("div");
     555                 return d.innerHTML = b, c = d.firstChild, c.className += " " + a, c.outerHTML
     556             }
     557 
     558             function u(a, c, d) {
     559                 function e() {
     560                     var f = +new Date,
     561                 l = f - g;
     562                     h += i * l / (1e3 / 60), k = "toNext" === j ? h > a : a > h, k ? (C.setWrapperTranslate(Math.ceil(h)), C._DOMAnimating = !0, window.setTimeout(function () {
     563                         e()
     564                     }, 1e3 / 60)) : (b.onSlideChangeEnd && ("to" === c ? d.runCallbacks === !0 && C.fireCallback(b.onSlideChangeEnd, C, j) : C.fireCallback(b.onSlideChangeEnd, C, j)), C.setWrapperTranslate(a), C._DOMAnimating = !1)
     565                 }
     566                 var f = "to" === c && d.speed >= 0 ? d.speed : b.speed,
     567             g = +new Date;
     568                 if (C.support.transitions || !b.DOMAnimation) C.setWrapperTranslate(a), C.setWrapperTransition(f);
     569                 else {
     570                     var h = C.getWrapperTranslate(),
     571                 i = Math.ceil((a - h) / f * (1e3 / 60)),
     572                 j = h > a ? "toNext" : "toPrev",
     573                 k = "toNext" === j ? h > a : a > h;
     574                     if (C._DOMAnimating) return;
     575                     e()
     576                 }
     577                 C.updateActiveSlide(a), b.onSlideNext && "next" === c && C.fireCallback(b.onSlideNext, C, a), b.onSlidePrev && "prev" === c && C.fireCallback(b.onSlidePrev, C, a), b.onSlideReset && "reset" === c && C.fireCallback(b.onSlideReset, C, a), ("next" === c || "prev" === c || "to" === c && d.runCallbacks === !0) && v(c)
     578             }
     579 
     580             function v(a) {
     581                 if (C.callPlugins("onSlideChangeStart"), b.onSlideChangeStart)
     582                     if (b.queueStartCallbacks && C.support.transitions) {
     583                         if (C._queueStartCallbacks) return;
     584                         C._queueStartCallbacks = !0, C.fireCallback(b.onSlideChangeStart, C, a), C.wrapperTransitionEnd(function () {
     585                             C._queueStartCallbacks = !1
     586                         })
     587                     } else C.fireCallback(b.onSlideChangeStart, C, a);
     588                 if (b.onSlideChangeEnd)
     589                     if (C.support.transitions)
     590                         if (b.queueEndCallbacks) {
     591                             if (C._queueEndCallbacks) return;
     592                             C._queueEndCallbacks = !0, C.wrapperTransitionEnd(function (c) {
     593                                 C.fireCallback(b.onSlideChangeEnd, c, a)
     594                             })
     595                         } else C.wrapperTransitionEnd(function (c) {
     596                             C.fireCallback(b.onSlideChangeEnd, c, a)
     597                         });
     598                     else b.DOMAnimation || setTimeout(function () {
     599                         C.fireCallback(b.onSlideChangeEnd, C, a)
     600                     }, 10)
     601             }
     602 
     603             function w() {
     604                 var a = C.paginationButtons;
     605                 if (a)
     606                     for (var b = 0; b < a.length; b++) C.h.removeEventListener(a[b], "click", y)
     607             }
     608 
     609             function x() {
     610                 var a = C.paginationButtons;
     611                 if (a)
     612                     for (var b = 0; b < a.length; b++) C.h.addEventListener(a[b], "click", y)
     613             }
     614 
     615             function y(a) {
     616                 for (var c, d = a.target || a.srcElement, e = C.paginationButtons, f = 0; f < e.length; f++) d === e[f] && (c = f);
     617                 b.autoplay && C.stopAutoplay(!0), C.swipeTo(c)
     618             }
     619 
     620             function z() {
     621                 _ = setTimeout(function () {
     622                     b.loop ? (C.fixLoop(), C.swipeNext(!0)) : C.swipeNext(!0) || (b.autoplayStopOnLast ? (clearTimeout(_), _ = void 0) : C.swipeTo(0)), C.wrapperTransitionEnd(function () {
     623                         "undefined" != typeof _ && z()
     624                     })
     625                 }, b.autoplay)
     626             }
     627 
     628             function A() {
     629                 C.calcSlides(), b.loader.slides.length > 0 && 0 === C.slides.length && C.loadSlides(), b.loop && C.createLoop(), C.init(), f(), b.pagination && C.createPagination(!0), b.loop || b.initialSlide > 0 ? C.swipeTo(b.initialSlide, 0, !1) : C.updateActiveSlide(0), b.autoplay && C.startAutoplay(), C.centerIndex = C.activeIndex, b.onSwiperCreated && C.fireCallback(b.onSwiperCreated, C), C.callPlugins("onSwiperCreated")
     630             }
     631             if (!document.body.outerHTML && document.body.__defineGetter__ && HTMLElement) {
     632                 var B = HTMLElement.prototype;
     633                 B.__defineGetter__ && B.__defineGetter__("outerHTML", function () {
     634                     return (new XMLSerializer).serializeToString(this)
     635                 })
     636             }
     637             if (window.getComputedStyle || (window.getComputedStyle = function (a) {
     638                 return this.el = a, this.getPropertyValue = function (b) {
     639                     var c = /(-([a-z]){1})/g;
     640                     return "float" === b && (b = "styleFloat"), c.test(b) && (b = b.replace(c, function () {
     641                         return arguments[2].toUpperCase()
     642                     })), a.currentStyle[b] ? a.currentStyle[b] : null
     643                 }, this
     644             }), Array.prototype.indexOf || (Array.prototype.indexOf = function (a, b) {
     645                 for (var c = b || 0, d = this.length; d > c; c++)
     646                     if (this[c] === a) return c;
     647                 return -1
     648             }), (document.querySelectorAll || window.jQuery) && "undefined" != typeof a && (a.nodeType || 0 !== c(a).length)) {
     649                 var C = this;
     650                 C.touches = {
     651                     start: 0,
     652                     startX: 0,
     653                     startY: 0,
     654                     current: 0,
     655                     currentX: 0,
     656                     currentY: 0,
     657                     diff: 0,
     658                     abs: 0
     659                 }, C.positions = {
     660                     start: 0,
     661                     abs: 0,
     662                     diff: 0,
     663                     current: 0
     664                 }, C.times = {
     665                     start: 0,
     666                     end: 0
     667                 }, C.id = (new Date).getTime(), C.container = a.nodeType ? a : c(a)[0], C.isTouched = !1, C.isMoved = !1, C.activeIndex = 0, C.centerIndex = 0, C.activeLoaderIndex = 0, C.activeLoopIndex = 0, C.previousIndex = null, C.velocity = 0, C.snapGrid = [], C.slidesGrid = [], C.imagesToLoad = [], C.imagesLoaded = 0, C.wrapperLeft = 0, C.wrapperRight = 0, C.wrapperTop = 0, C.wrapperBottom = 0, C.isAndroid = navigator.userAgent.toLowerCase().indexOf("android") >= 0;
     668                 var D, E, F, G, H, I, J = {
     669                     eventTarget: "wrapper",
     670                     mode: "horizontal",
     671                     touchRatio: 1,
     672                     speed: 300,
     673                     freeMode: !1,
     674                     freeModeFluid: !1,
     675                     momentumRatio: 1,
     676                     momentumBounce: !0,
     677                     momentumBounceRatio: 1,
     678                     slidesPerView: 1,
     679                     slidesPerGroup: 1,
     680                     slidesPerViewFit: !0,
     681                     simulateTouch: !0,
     682                     followFinger: !0,
     683                     shortSwipes: !0,
     684                     longSwipesRatio: .5,
     685                     moveStartThreshold: !1,
     686                     onlyExternal: !1,
     687                     createPagination: !0,
     688                     pagination: !1,
     689                     paginationElement: "span",
     690                     paginationClickable: !1,
     691                     paginationAsRange: !0,
     692                     resistance: !0,
     693                     scrollContainer: !1,
     694                     preventLinks: !0,
     695                     preventLinksPropagation: !1,
     696                     noSwiping: !1,
     697                     noSwipingClass: "swiper-no-swiping",
     698                     initialSlide: 0,
     699                     keyboardControl: !1,
     700                     mousewheelControl: !1,
     701                     mousewheelControlForceToAxis: !1,
     702                     useCSS3Transforms: !0,
     703                     autoplay: !1,
     704                     autoplayDisableOnInteraction: !0,
     705                     autoplayStopOnLast: !1,
     706                     loop: !1,
     707                     loopAdditionalSlides: 0,
     708                     roundLengths: !1,
     709                     calculateHeight: !1,
     710                     cssWidthAndHeight: !1,
     711                     updateOnImagesReady: !0,
     712                     releaseFormElements: !0,
     713                     watchActiveIndex: !1,
     714                     visibilityFullFit: !1,
     715                     offsetPxBefore: 0,
     716                     offsetPxAfter: 0,
     717                     offsetSlidesBefore: 0,
     718                     offsetSlidesAfter: 0,
     719                     centeredSlides: !1,
     720                     queueStartCallbacks: !1,
     721                     queueEndCallbacks: !1,
     722                     autoResize: !0,
     723                     resizeReInit: !1,
     724                     DOMAnimation: !0,
     725                     loader: {
     726                         slides: [],
     727                         slidesHTMLType: "inner",
     728                         surroundGroups: 1,
     729                         logic: "reload",
     730                         loadAllSlides: !1
     731                     },
     732                     swipeToPrev: !0,
     733                     swipeToNext: !0,
     734                     slideElement: "div",
     735                     slideClass: "swiper-slide",
     736                     slideActiveClass: "swiper-slide-active",
     737                     slideVisibleClass: "swiper-slide-visible",
     738                     slideDuplicateClass: "swiper-slide-duplicate",
     739                     wrapperClass: "swiper-wrapper",
     740                     paginationElementClass: "swiper-pagination-switch",
     741                     paginationActiveClass: "swiper-active-switch",
     742                     paginationVisibleClass: "swiper-visible-switch"
     743                 };
     744                 b = b || {};
     745                 for (var K in J)
     746                     if (K in b && "object" == typeof b[K])
     747                         for (var L in J[K]) L in b[K] || (b[K][L] = J[K][L]);
     748                     else K in b || (b[K] = J[K]);
     749                 C.params = b, b.scrollContainer && (b.freeMode = !0, b.freeModeFluid = !0), b.loop && (b.resistance = "100%");
     750                 var M = "horizontal" === b.mode,
     751             N = ["mousedown", "mousemove", "mouseup"];
     752                 C.browser.ie10 && (N = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]), C.browser.ie11 && (N = ["pointerdown", "pointermove", "pointerup"]), C.touchEvents = {
     753                     touchStart: C.support.touch || !b.simulateTouch ? "touchstart" : N[0],
     754                     touchMove: C.support.touch || !b.simulateTouch ? "touchmove" : N[1],
     755                     touchEnd: C.support.touch || !b.simulateTouch ? "touchend" : N[2]
     756                 };
     757                 for (var O = C.container.childNodes.length - 1; O >= 0; O--)
     758                     if (C.container.childNodes[O].className)
     759                         for (var P = C.container.childNodes[O].className.split(/s+/), Q = 0; Q < P.length; Q++) P[Q] === b.wrapperClass && (D = C.container.childNodes[O]);
     760                 C.wrapper = D, C._extendSwiperSlide = function (a) {
     761                     return a.append = function () {
     762                         return b.loop ? a.insertAfter(C.slides.length - C.loopedSlides) : (C.wrapper.appendChild(a), C.reInit()), a
     763                     }, a.prepend = function () {
     764                         return b.loop ? (C.wrapper.insertBefore(a, C.slides[C.loopedSlides]), C.removeLoopedSlides(), C.calcSlides(), C.createLoop()) : C.wrapper.insertBefore(a, C.wrapper.firstChild), C.reInit(), a
     765                     }, a.insertAfter = function (c) {
     766                         if ("undefined" == typeof c) return !1;
     767                         var d;
     768                         return b.loop ? (d = C.slides[c + 1 + C.loopedSlides], d ? C.wrapper.insertBefore(a, d) : C.wrapper.appendChild(a), C.removeLoopedSlides(), C.calcSlides(), C.createLoop()) : (d = C.slides[c + 1], C.wrapper.insertBefore(a, d)), C.reInit(), a
     769                     }, a.clone = function () {
     770                         return C._extendSwiperSlide(a.cloneNode(!0))
     771                     }, a.remove = function () {
     772                         C.wrapper.removeChild(a), C.reInit()
     773                     }, a.html = function (b) {
     774                         return "undefined" == typeof b ? a.innerHTML : (a.innerHTML = b, a)
     775                     }, a.index = function () {
     776                         for (var b, c = C.slides.length - 1; c >= 0; c--) a === C.slides[c] && (b = c);
     777                         return b
     778                     }, a.isActive = function () {
     779                         return a.index() === C.activeIndex ? !0 : !1
     780                     }, a.swiperSlideDataStorage || (a.swiperSlideDataStorage = {}), a.getData = function (b) {
     781                         return a.swiperSlideDataStorage[b]
     782                     }, a.setData = function (b, c) {
     783                         return a.swiperSlideDataStorage[b] = c, a
     784                     }, a.data = function (b, c) {
     785                         return "undefined" == typeof c ? a.getAttribute("data-" + b) : (a.setAttribute("data-" + b, c), a)
     786                     }, a.getWidth = function (b, c) {
     787                         return C.h.getWidth(a, b, c)
     788                     }, a.getHeight = function (b, c) {
     789                         return C.h.getHeight(a, b, c)
     790                     }, a.getOffset = function () {
     791                         return C.h.getOffset(a)
     792                     }, a
     793                 }, C.calcSlides = function (a) {
     794                     var c = C.slides ? C.slides.length : !1;
     795                     C.slides = [], C.displaySlides = [];
     796                     for (var d = 0; d < C.wrapper.childNodes.length; d++)
     797                         if (C.wrapper.childNodes[d].className)
     798                             for (var e = C.wrapper.childNodes[d].className, f = e.split(/s+/), i = 0; i < f.length; i++) f[i] === b.slideClass && C.slides.push(C.wrapper.childNodes[d]);
     799                     for (d = C.slides.length - 1; d >= 0; d--) C._extendSwiperSlide(C.slides[d]);
     800                     c !== !1 && (c !== C.slides.length || a) && (h(), g(), C.updateActiveSlide(), C.params.pagination && C.createPagination(), C.callPlugins("numberOfSlidesChanged"))
     801                 }, C.createSlide = function (a, c, d) {
     802                     c = c || C.params.slideClass, d = d || b.slideElement;
     803                     var e = document.createElement(d);
     804                     return e.innerHTML = a || "", e.className = c, C._extendSwiperSlide(e)
     805                 }, C.appendSlide = function (a, b, c) {
     806                     return a ? a.nodeType ? C._extendSwiperSlide(a).append() : C.createSlide(a, b, c).append() : void 0
     807                 }, C.prependSlide = function (a, b, c) {
     808                     return a ? a.nodeType ? C._extendSwiperSlide(a).prepend() : C.createSlide(a, b, c).prepend() : void 0
     809                 }, C.insertSlideAfter = function (a, b, c, d) {
     810                     return "undefined" == typeof a ? !1 : b.nodeType ? C._extendSwiperSlide(b).insertAfter(a) : C.createSlide(b, c, d).insertAfter(a)
     811                 }, C.removeSlide = function (a) {
     812                     if (C.slides[a]) {
     813                         if (b.loop) {
     814                             if (!C.slides[a + C.loopedSlides]) return !1;
     815                             C.slides[a + C.loopedSlides].remove(), C.removeLoopedSlides(), C.calcSlides(), C.createLoop()
     816                         } else C.slides[a].remove();
     817                         return !0
     818                     }
     819                     return !1
     820                 }, C.removeLastSlide = function () {
     821                     return C.slides.length > 0 ? (b.loop ? (C.slides[C.slides.length - 1 - C.loopedSlides].remove(), C.removeLoopedSlides(), C.calcSlides(), C.createLoop()) : C.slides[C.slides.length - 1].remove(), !0) : !1
     822                 }, C.removeAllSlides = function () {
     823                     for (var a = C.slides.length - 1; a >= 0; a--) C.slides[a].remove()
     824                 }, C.getSlide = function (a) {
     825                     return C.slides[a]
     826                 }, C.getLastSlide = function () {
     827                     return C.slides[C.slides.length - 1]
     828                 }, C.getFirstSlide = function () {
     829                     return C.slides[0]
     830                 }, C.activeSlide = function () {
     831                     return C.slides[C.activeIndex]
     832                 }, C.fireCallback = function () {
     833                     var a = arguments[0];
     834                     if ("[object Array]" === Object.prototype.toString.call(a))
     835                         for (var c = 0; c < a.length; c++) "function" == typeof a[c] && a[c](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
     836                     else "[object String]" === Object.prototype.toString.call(a) ? b["on" + a] && C.fireCallback(b["on" + a], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]) : a(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
     837                 }, C.addCallback = function (a, b) {
     838                     var c, e = this;
     839                     return e.params["on" + a] ? d(this.params["on" + a]) ? this.params["on" + a].push(b) : "function" == typeof this.params["on" + a] ? (c = this.params["on" + a], this.params["on" + a] = [], this.params["on" + a].push(c), this.params["on" + a].push(b)) : void 0 : (this.params["on" + a] = [], this.params["on" + a].push(b))
     840                 }, C.removeCallbacks = function (a) {
     841                     C.params["on" + a] && (C.params["on" + a] = null)
     842                 };
     843                 var R = [];
     844                 for (var S in C.plugins)
     845                     if (b[S]) {
     846                         var T = C.plugins[S](C, b[S]);
     847                         T && R.push(T)
     848                     }
     849                 C.callPlugins = function (a, b) {
     850                     b || (b = {});
     851                     for (var c = 0; c < R.length; c++) a in R[c] && R[c][a](b)
     852                 }, !C.browser.ie10 && !C.browser.ie11 || b.onlyExternal || C.wrapper.classList.add("swiper-wp8-" + (M ? "horizontal" : "vertical")), b.freeMode && (C.container.className += " swiper-free-mode"), C.initialized = !1, C.init = function (a, c) {
     853                     var d = C.h.getWidth(C.container, !1, b.roundLengths),
     854                 e = C.h.getHeight(C.container, !1, b.roundLengths);
     855                     if (d !== C.width || e !== C.height || a) {
     856                         C.width = d, C.height = e;
     857                         var f, g, h, i, j, k, l;
     858                         I = M ? d : e;
     859                         var m = C.wrapper;
     860                         if (a && C.calcSlides(c), "auto" === b.slidesPerView) {
     861                             var n = 0,
     862                         o = 0;
     863                             b.slidesOffset > 0 && (m.style.paddingLeft = "", m.style.paddingRight = "", m.style.paddingTop = "", m.style.paddingBottom = ""), m.style.width = "", m.style.height = "", b.offsetPxBefore > 0 && (M ? C.wrapperLeft = b.offsetPxBefore : C.wrapperTop = b.offsetPxBefore), b.offsetPxAfter > 0 && (M ? C.wrapperRight = b.offsetPxAfter : C.wrapperBottom = b.offsetPxAfter), b.centeredSlides && (M ? (C.wrapperLeft = (I - this.slides[0].getWidth(!0, b.roundLengths)) / 2, C.wrapperRight = (I - C.slides[C.slides.length - 1].getWidth(!0, b.roundLengths)) / 2) : (C.wrapperTop = (I - C.slides[0].getHeight(!0, b.roundLengths)) / 2, C.wrapperBottom = (I - C.slides[C.slides.length - 1].getHeight(!0, b.roundLengths)) / 2)), M ? (C.wrapperLeft >= 0 && (m.style.paddingLeft = C.wrapperLeft + "px"), C.wrapperRight >= 0 && (m.style.paddingRight = C.wrapperRight + "px")) : (C.wrapperTop >= 0 && (m.style.paddingTop = C.wrapperTop + "px"), C.wrapperBottom >= 0 && (m.style.paddingBottom = C.wrapperBottom + "px")), k = 0;
     864                             var p = 0;
     865                             for (C.snapGrid = [], C.slidesGrid = [], h = 0, l = 0; l < C.slides.length; l++) {
     866                                 f = C.slides[l].getWidth(!0, b.roundLengths), g = C.slides[l].getHeight(!0, b.roundLengths), b.calculateHeight && (h = Math.max(h, g));
     867                                 var q = M ? f : g;
     868                                 if (b.centeredSlides) {
     869                                     var r = l === C.slides.length - 1 ? 0 : C.slides[l + 1].getWidth(!0, b.roundLengths),
     870                                 s = l === C.slides.length - 1 ? 0 : C.slides[l + 1].getHeight(!0, b.roundLengths),
     871                                 t = M ? r : s;
     872                                     if (q > I) {
     873                                         if (b.slidesPerViewFit) C.snapGrid.push(k + C.wrapperLeft), C.snapGrid.push(k + q - I + C.wrapperLeft);
     874                                         else
     875                                             for (var u = 0; u <= Math.floor(q / (I + C.wrapperLeft)); u++) C.snapGrid.push(0 === u ? k + C.wrapperLeft : k + C.wrapperLeft + I * u);
     876                                         C.slidesGrid.push(k + C.wrapperLeft)
     877                                     } else C.snapGrid.push(p), C.slidesGrid.push(p);
     878                                     p += q / 2 + t / 2
     879                                 } else {
     880                                     if (q > I)
     881                                         if (b.slidesPerViewFit) C.snapGrid.push(k), C.snapGrid.push(k + q - I);
     882                                         else if (0 !== I)
     883                                             for (var v = 0; v <= Math.floor(q / I); v++) C.snapGrid.push(k + I * v);
     884                                         else C.snapGrid.push(k);
     885                                     else C.snapGrid.push(k);
     886                                     C.slidesGrid.push(k)
     887                                 }
     888                                 k += q, n += f, o += g
     889                             }
     890                             b.calculateHeight && (C.height = h), M ? (F = n + C.wrapperRight + C.wrapperLeft, m.style.width = n + "px", m.style.height = C.height + "px") : (F = o + C.wrapperTop + C.wrapperBottom, m.style.width = C.width + "px", m.style.height = o + "px")
     891                         } else if (b.scrollContainer) m.style.width = "", m.style.height = "", i = C.slides[0].getWidth(!0, b.roundLengths), j = C.slides[0].getHeight(!0, b.roundLengths), F = M ? i : j, m.style.width = i + "px", m.style.height = j + "px", E = M ? i : j;
     892                         else {
     893                             if (b.calculateHeight) {
     894                                 for (h = 0, j = 0, M || (C.container.style.height = ""), m.style.height = "", l = 0; l < C.slides.length; l++) C.slides[l].style.height = "", h = Math.max(C.slides[l].getHeight(!0), h), M || (j += C.slides[l].getHeight(!0));
     895                                 g = h, C.height = g, M ? j = g : (I = g, C.container.style.height = I + "px")
     896                             } else g = M ? C.height : C.height / b.slidesPerView, b.roundLengths && (g = Math.ceil(g)), j = M ? C.height : C.slides.length * g;
     897                             for (f = M ? C.width / b.slidesPerView : C.width, b.roundLengths && (f = Math.ceil(f)), i = M ? C.slides.length * f : C.width, E = M ? f : g, b.offsetSlidesBefore > 0 && (M ? C.wrapperLeft = E * b.offsetSlidesBefore : C.wrapperTop = E * b.offsetSlidesBefore), b.offsetSlidesAfter > 0 && (M ? C.wrapperRight = E * b.offsetSlidesAfter : C.wrapperBottom = E * b.offsetSlidesAfter), b.offsetPxBefore > 0 && (M ? C.wrapperLeft = b.offsetPxBefore : C.wrapperTop = b.offsetPxBefore), b.offsetPxAfter > 0 && (M ? C.wrapperRight = b.offsetPxAfter : C.wrapperBottom = b.offsetPxAfter), b.centeredSlides && (M ? (C.wrapperLeft = (I - E) / 2, C.wrapperRight = (I - E) / 2) : (C.wrapperTop = (I - E) / 2, C.wrapperBottom = (I - E) / 2)), M ? (C.wrapperLeft > 0 && (m.style.paddingLeft = C.wrapperLeft + "px"), C.wrapperRight > 0 && (m.style.paddingRight = C.wrapperRight + "px")) : (C.wrapperTop > 0 && (m.style.paddingTop = C.wrapperTop + "px"), C.wrapperBottom > 0 && (m.style.paddingBottom = C.wrapperBottom + "px")), F = M ? i + C.wrapperRight + C.wrapperLeft : j + C.wrapperTop + C.wrapperBottom, parseFloat(i) > 0 && (!b.cssWidthAndHeight || "height" === b.cssWidthAndHeight) && (m.style.width = i + "px"), parseFloat(j) > 0 && (!b.cssWidthAndHeight || "width" === b.cssWidthAndHeight) && (m.style.height = j + "px"), k = 0, C.snapGrid = [], C.slidesGrid = [], l = 0; l < C.slides.length; l++) C.snapGrid.push(k), C.slidesGrid.push(k), k += E, parseFloat(f) > 0 && (!b.cssWidthAndHeight || "height" === b.cssWidthAndHeight) && (C.slides[l].style.width = f + "px"), parseFloat(g) > 0 && (!b.cssWidthAndHeight || "width" === b.cssWidthAndHeight) && (C.slides[l].style.height = g + "px")
     898                         }
     899                         C.initialized ? (C.callPlugins("onInit"), b.onInit && C.fireCallback(b.onInit, C)) : (C.callPlugins("onFirstInit"), b.onFirstInit && C.fireCallback(b.onFirstInit, C)), C.initialized = !0
     900                     }
     901                 }, C.reInit = function (a) {
     902                     C.init(!0, a)
     903                 }, C.resizeFix = function (a) {
     904                     C.callPlugins("beforeResizeFix"), C.init(b.resizeReInit || a), b.freeMode ? C.getWrapperTranslate() < -e() && (C.setWrapperTransition(0), C.setWrapperTranslate(-e())) : (C.swipeTo(b.loop ? C.activeLoopIndex : C.activeIndex, 0, !1), b.autoplay && (C.support.transitions && "undefined" != typeof _ ? "undefined" != typeof _ && (clearTimeout(_), _ = void 0, C.startAutoplay()) : "undefined" != typeof ab && (clearInterval(ab), ab = void 0, C.startAutoplay()))), C.callPlugins("afterResizeFix")
     905                 }, C.destroy = function () {
     906                     var a = C.h.removeEventListener,
     907                 c = "wrapper" === b.eventTarget ? C.wrapper : C.container;
     908                     C.browser.ie10 || C.browser.ie11 ? (a(c, C.touchEvents.touchStart, p), a(document, C.touchEvents.touchMove, q), a(document, C.touchEvents.touchEnd, r)) : (C.support.touch && (a(c, "touchstart", p), a(c, "touchmove", q), a(c, "touchend", r)), b.simulateTouch && (a(c, "mousedown", p), a(document, "mousemove", q), a(document, "mouseup", r))), b.autoResize && a(window, "resize", C.resizeFix), h(), b.paginationClickable && w(), b.mousewheelControl && C._wheelEvent && a(C.container, C._wheelEvent, j), b.keyboardControl && a(document, "keydown", i), b.autoplay && C.stopAutoplay(), C.callPlugins("onDestroy"), C = null
     909                 }, C.disableKeyboardControl = function () {
     910                     b.keyboardControl = !1, C.h.removeEventListener(document, "keydown", i)
     911                 }, C.enableKeyboardControl = function () {
     912                     b.keyboardControl = !0, C.h.addEventListener(document, "keydown", i)
     913                 };
     914                 var U = (new Date).getTime();
     915                 if (C.disableMousewheelControl = function () {
     916                     return C._wheelEvent ? (b.mousewheelControl = !1, C.h.removeEventListener(C.container, C._wheelEvent, j), !0) : !1
     917                 }, C.enableMousewheelControl = function () {
     918                     return C._wheelEvent ? (b.mousewheelControl = !0, C.h.addEventListener(C.container, C._wheelEvent, j), !0) : !1
     919                 }, b.grabCursor) {
     920                     var V = C.container.style;
     921                     V.cursor = "move", V.cursor = "grab", V.cursor = "-moz-grab", V.cursor = "-webkit-grab"
     922                 }
     923                 C.allowSlideClick = !0, C.allowLinks = !0;
     924                 var W, X, Y, Z = !1,
     925             $ = !0;
     926                 C.swipeNext = function (a) {
     927                     !a && b.loop && C.fixLoop(), !a && b.autoplay && C.stopAutoplay(!0), C.callPlugins("onSwipeNext");
     928                     var c = C.getWrapperTranslate(),
     929                 d = c;
     930                     if ("auto" === b.slidesPerView) {
     931                         for (var f = 0; f < C.snapGrid.length; f++)
     932                             if (-c >= C.snapGrid[f] && -c < C.snapGrid[f + 1]) {
     933                                 d = -C.snapGrid[f + 1];
     934                                 break
     935                             }
     936                     } else {
     937                         var g = E * b.slidesPerGroup;
     938                         d = -(Math.floor(Math.abs(c) / Math.floor(g)) * g + g)
     939                     }
     940                     return d < -e() && (d = -e()), d === c ? !1 : (u(d, "next"), !0)
     941                 }, C.swipePrev = function (a) {
     942                     !a && b.loop && C.fixLoop(), !a && b.autoplay && C.stopAutoplay(!0), C.callPlugins("onSwipePrev");
     943                     var c, d = Math.ceil(C.getWrapperTranslate());
     944                     if ("auto" === b.slidesPerView) {
     945                         c = 0;
     946                         for (var e = 1; e < C.snapGrid.length; e++) {
     947                             if (-d === C.snapGrid[e]) {
     948                                 c = -C.snapGrid[e - 1];
     949                                 break
     950                             }
     951                             if (-d > C.snapGrid[e] && -d < C.snapGrid[e + 1]) {
     952                                 c = -C.snapGrid[e];
     953                                 break
     954                             }
     955                         }
     956                     } else {
     957                         var f = E * b.slidesPerGroup;
     958                         c = -(Math.ceil(-d / f) - 1) * f
     959                     }
     960                     return c > 0 && (c = 0), c === d ? !1 : (u(c, "prev"), !0)
     961                 }, C.swipeReset = function () {
     962                     C.callPlugins("onSwipeReset");
     963                     {
     964                         var a, c = C.getWrapperTranslate(),
     965                     d = E * b.slidesPerGroup; -e()
     966                     }
     967                     if ("auto" === b.slidesPerView) {
     968                         a = 0;
     969                         for (var f = 0; f < C.snapGrid.length; f++) {
     970                             if (-c === C.snapGrid[f]) return;
     971                             if (-c >= C.snapGrid[f] && -c < C.snapGrid[f + 1]) {
     972                                 a = C.positions.diff > 0 ? -C.snapGrid[f + 1] : -C.snapGrid[f];
     973                                 break
     974                             }
     975                         } -c >= C.snapGrid[C.snapGrid.length - 1] && (a = -C.snapGrid[C.snapGrid.length - 1]), c <= -e() && (a = -e())
     976                     } else a = 0 > c ? Math.round(c / d) * d : 0, c <= -e() && (a = -e());
     977                     return b.scrollContainer && (a = 0 > c ? c : 0), a < -e() && (a = -e()), b.scrollContainer && I > E && (a = 0), a === c ? !1 : (u(a, "reset"), !0)
     978                 }, C.swipeTo = function (a, c, d) {
     979                     a = parseInt(a, 10), C.callPlugins("onSwipeTo", {
     980                         index: a,
     981                         speed: c
     982                     }), b.loop && (a += C.loopedSlides);
     983                     var f = C.getWrapperTranslate();
     984                     if (!(a > C.slides.length - 1 || 0 > a)) {
     985                         var g;
     986                         return g = "auto" === b.slidesPerView ? -C.slidesGrid[a] : -a * E, g < -e() && (g = -e()), g === f ? !1 : (d = d === !1 ? !1 : !0, u(g, "to", {
     987                             index: a,
     988                             speed: c,
     989                             runCallbacks: d
     990                         }), !0)
     991                     }
     992                 }, C._queueStartCallbacks = !1, C._queueEndCallbacks = !1, C.updateActiveSlide = function (a) {
     993                     if (C.initialized && 0 !== C.slides.length) {
     994                         C.previousIndex = C.activeIndex, "undefined" == typeof a && (a = C.getWrapperTranslate()), a > 0 && (a = 0);
     995                         var c;
     996                         if ("auto" === b.slidesPerView) {
     997                             if (C.activeIndex = C.slidesGrid.indexOf(-a), C.activeIndex < 0) {
     998                                 for (c = 0; c < C.slidesGrid.length - 1 && !(-a > C.slidesGrid[c] && -a < C.slidesGrid[c + 1]); c++);
     999                                 var d = Math.abs(C.slidesGrid[c] + a),
    1000                             e = Math.abs(C.slidesGrid[c + 1] + a);
    1001                                 C.activeIndex = e >= d ? c : c + 1
    1002                             }
    1003                         } else C.activeIndex = Math[b.visibilityFullFit ? "ceil" : "round"](-a / E);
    1004                         if (C.activeIndex === C.slides.length && (C.activeIndex = C.slides.length - 1), C.activeIndex < 0 && (C.activeIndex = 0), C.slides[C.activeIndex]) {
    1005                             if (C.calcVisibleSlides(a), C.support.classList) {
    1006                                 var f;
    1007                                 for (c = 0; c < C.slides.length; c++) f = C.slides[c], f.classList.remove(b.slideActiveClass), C.visibleSlides.indexOf(f) >= 0 ? f.classList.add(b.slideVisibleClass) : f.classList.remove(b.slideVisibleClass);
    1008                                 C.slides[C.activeIndex].classList.add(b.slideActiveClass)
    1009                             } else {
    1010                                 var g = new RegExp("\s*" + b.slideActiveClass),
    1011                             h = new RegExp("\s*" + b.slideVisibleClass);
    1012                                 for (c = 0; c < C.slides.length; c++) C.slides[c].className = C.slides[c].className.replace(g, "").replace(h, ""), C.visibleSlides.indexOf(C.slides[c]) >= 0 && (C.slides[c].className += " " + b.slideVisibleClass);
    1013                                 C.slides[C.activeIndex].className += " " + b.slideActiveClass
    1014                             }
    1015                             if (b.loop) {
    1016                                 var i = C.loopedSlides;
    1017                                 C.activeLoopIndex = C.activeIndex - i, C.activeLoopIndex >= C.slides.length - 2 * i && (C.activeLoopIndex = C.slides.length - 2 * i - C.activeLoopIndex), C.activeLoopIndex < 0 && (C.activeLoopIndex = C.slides.length - 2 * i + C.activeLoopIndex), C.activeLoopIndex < 0 && (C.activeLoopIndex = 0)
    1018                             } else C.activeLoopIndex = C.activeIndex;
    1019                             b.pagination && C.updatePagination(a)
    1020                         }
    1021                     }
    1022                 }, C.createPagination = function (a) {
    1023                     if (b.paginationClickable && C.paginationButtons && w(), C.paginationContainer = b.pagination.nodeType ? b.pagination : c(b.pagination)[0], b.createPagination) {
    1024                         var d = "",
    1025                     e = C.slides.length,
    1026                     f = e;
    1027                         b.loop && (f -= 2 * C.loopedSlides);
    1028                         for (var g = 0; f > g; g++) d += "<" + b.paginationElement + ' class="' + b.paginationElementClass + '"></' + b.paginationElement + ">";
    1029                         C.paginationContainer.innerHTML = d
    1030                     }
    1031                     C.paginationButtons = c("." + b.paginationElementClass, C.paginationContainer), a || C.updatePagination(), C.callPlugins("onCreatePagination"), b.paginationClickable && x()
    1032                 }, C.updatePagination = function (a) {
    1033                     if (b.pagination && !(C.slides.length < 1)) {
    1034                         var d = c("." + b.paginationActiveClass, C.paginationContainer);
    1035                         if (d) {
    1036                             var e = C.paginationButtons;
    1037                             if (0 !== e.length) {
    1038                                 for (var f = 0; f < e.length; f++) e[f].className = b.paginationElementClass;
    1039                                 var g = b.loop ? C.loopedSlides : 0;
    1040                                 if (b.paginationAsRange) {
    1041                                     C.visibleSlides || C.calcVisibleSlides(a);
    1042                                     var h, i = [];
    1043                                     for (h = 0; h < C.visibleSlides.length; h++) {
    1044                                         var j = C.slides.indexOf(C.visibleSlides[h]) - g;
    1045                                         b.loop && 0 > j && (j = C.slides.length - 2 * C.loopedSlides + j), b.loop && j >= C.slides.length - 2 * C.loopedSlides && (j = C.slides.length - 2 * C.loopedSlides - j, j = Math.abs(j)), i.push(j)
    1046                                     }
    1047                                     for (h = 0; h < i.length; h++) e[i[h]] && (e[i[h]].className += " " + b.paginationVisibleClass);
    1048                                     b.loop ? void 0 !== e[C.activeLoopIndex] && (e[C.activeLoopIndex].className += " " + b.paginationActiveClass) : e[C.activeIndex].className += " " + b.paginationActiveClass
    1049                                 } else b.loop ? e[C.activeLoopIndex] && (e[C.activeLoopIndex].className += " " + b.paginationActiveClass + " " + b.paginationVisibleClass) : e[C.activeIndex].className += " " + b.paginationActiveClass + " " + b.paginationVisibleClass
    1050                             }
    1051                         }
    1052                     }
    1053                 }, C.calcVisibleSlides = function (a) {
    1054                     var c = [],
    1055                 d = 0,
    1056                 e = 0,
    1057                 f = 0;
    1058                     M && C.wrapperLeft > 0 && (a += C.wrapperLeft), !M && C.wrapperTop > 0 && (a += C.wrapperTop);
    1059                     for (var g = 0; g < C.slides.length; g++) {
    1060                         d += e, e = "auto" === b.slidesPerView ? M ? C.h.getWidth(C.slides[g], !0, b.roundLengths) : C.h.getHeight(C.slides[g], !0, b.roundLengths) : E, f = d + e;
    1061                         var h = !1;
    1062                         b.visibilityFullFit ? (d >= -a && -a + I >= f && (h = !0), -a >= d && f >= -a + I && (h = !0)) : (f > -a && -a + I >= f && (h = !0), d >= -a && -a + I > d && (h = !0), -a > d && f > -a + I && (h = !0)), h && c.push(C.slides[g])
    1063                     }
    1064                     0 === c.length && (c = [C.slides[C.activeIndex]]), C.visibleSlides = c
    1065                 };
    1066                 var _, ab;
    1067                 C.startAutoplay = function () {
    1068                     if (C.support.transitions) {
    1069                         if ("undefined" != typeof _) return !1;
    1070                         if (!b.autoplay) return;
    1071                         C.callPlugins("onAutoplayStart"), b.onAutoplayStart && C.fireCallback(b.onAutoplayStart, C), z()
    1072                     } else {
    1073                         if ("undefined" != typeof ab) return !1;
    1074                         if (!b.autoplay) return;
    1075                         C.callPlugins("onAutoplayStart"), b.onAutoplayStart && C.fireCallback(b.onAutoplayStart, C), ab = setInterval(function () {
    1076                             b.loop ? (C.fixLoop(), C.swipeNext(!0)) : C.swipeNext(!0) || (b.autoplayStopOnLast ? (clearInterval(ab), ab = void 0) : C.swipeTo(0))
    1077                         }, b.autoplay)
    1078                     }
    1079                 }, C.stopAutoplay = function (a) {
    1080                     if (C.support.transitions) {
    1081                         if (!_) return;
    1082                         _ && clearTimeout(_), _ = void 0, a && !b.autoplayDisableOnInteraction && C.wrapperTransitionEnd(function () {
    1083                             z()
    1084                         }), C.callPlugins("onAutoplayStop"), b.onAutoplayStop && C.fireCallback(b.onAutoplayStop, C)
    1085                     } else ab && clearInterval(ab), ab = void 0, C.callPlugins("onAutoplayStop"), b.onAutoplayStop && C.fireCallback(b.onAutoplayStop, C)
    1086                 }, C.loopCreated = !1, C.removeLoopedSlides = function () {
    1087                     if (C.loopCreated)
    1088                         for (var a = 0; a < C.slides.length; a++) C.slides[a].getData("looped") === !0 && C.wrapper.removeChild(C.slides[a])
    1089                 }, C.createLoop = function () {
    1090                     if (0 !== C.slides.length) {
    1091                         C.loopedSlides = "auto" === b.slidesPerView ? b.loopedSlides || 1 : b.slidesPerView + b.loopAdditionalSlides, C.loopedSlides > C.slides.length && (C.loopedSlides = C.slides.length);
    1092                         var a, c = "",
    1093                     d = "",
    1094                     e = "",
    1095                     f = C.slides.length,
    1096                     g = Math.floor(C.loopedSlides / f),
    1097                     h = C.loopedSlides % f;
    1098                         for (a = 0; g * f > a; a++) {
    1099                             var i = a;
    1100                             if (a >= f) {
    1101                                 var j = Math.floor(a / f);
    1102                                 i = a - f * j
    1103                             }
    1104                             e += C.slides[i].outerHTML
    1105                         }
    1106                         for (a = 0; h > a; a++) d += t(b.slideDuplicateClass, C.slides[a].outerHTML);
    1107                         for (a = f - h; f > a; a++) c += t(b.slideDuplicateClass, C.slides[a].outerHTML);
    1108                         var k = c + e + D.innerHTML + e + d;
    1109                         for (D.innerHTML = k, C.loopCreated = !0, C.calcSlides(), a = 0; a < C.slides.length; a++) (a < C.loopedSlides || a >= C.slides.length - C.loopedSlides) && C.slides[a].setData("looped", !0);
    1110                         C.callPlugins("onCreateLoop")
    1111                     }
    1112                 }, C.fixLoop = function () {
    1113                     var a;
    1114                     C.activeIndex < C.loopedSlides ? (a = C.slides.length - 3 * C.loopedSlides + C.activeIndex, C.swipeTo(a, 0, !1)) : ("auto" === b.slidesPerView && C.activeIndex >= 2 * C.loopedSlides || C.activeIndex > C.slides.length - 2 * b.slidesPerView) && (a = -C.slides.length + C.activeIndex + C.loopedSlides, C.swipeTo(a, 0, !1))
    1115                 }, C.loadSlides = function () {
    1116                     var a = "";
    1117                     C.activeLoaderIndex = 0;
    1118                     for (var c = b.loader.slides, d = b.loader.loadAllSlides ? c.length : b.slidesPerView * (1 + b.loader.surroundGroups), e = 0; d > e; e++) a += "outer" === b.loader.slidesHTMLType ? c[e] : "<" + b.slideElement + ' class="' + b.slideClass + '" data-swiperindex="' + e + '">' + c[e] + "</" + b.slideElement + ">";
    1119                     C.wrapper.innerHTML = a, C.calcSlides(!0), b.loader.loadAllSlides || C.wrapperTransitionEnd(C.reloadSlides, !0)
    1120                 }, C.reloadSlides = function () {
    1121                     var a = b.loader.slides,
    1122                 c = parseInt(C.activeSlide().data("swiperindex"), 10);
    1123                     if (!(0 > c || c > a.length - 1)) {
    1124                         C.activeLoaderIndex = c;
    1125                         var d = Math.max(0, c - b.slidesPerView * b.loader.surroundGroups),
    1126                     e = Math.min(c + b.slidesPerView * (1 + b.loader.surroundGroups) - 1, a.length - 1);
    1127                         if (c > 0) {
    1128                             var f = -E * (c - d);
    1129                             C.setWrapperTranslate(f), C.setWrapperTransition(0)
    1130                         }
    1131                         var g;
    1132                         if ("reload" === b.loader.logic) {
    1133                             C.wrapper.innerHTML = "";
    1134                             var h = "";
    1135                             for (g = d; e >= g; g++) h += "outer" === b.loader.slidesHTMLType ? a[g] : "<" + b.slideElement + ' class="' + b.slideClass + '" data-swiperindex="' + g + '">' + a[g] + "</" + b.slideElement + ">";
    1136                             C.wrapper.innerHTML = h
    1137                         } else {
    1138                             var i = 1e3,
    1139                         j = 0;
    1140                             for (g = 0; g < C.slides.length; g++) {
    1141                                 var k = C.slides[g].data("swiperindex");
    1142                                 d > k || k > e ? C.wrapper.removeChild(C.slides[g]) : (i = Math.min(k, i), j = Math.max(k, j))
    1143                             }
    1144                             for (g = d; e >= g; g++) {
    1145                                 var l;
    1146                                 i > g && (l = document.createElement(b.slideElement), l.className = b.slideClass, l.setAttribute("data-swiperindex", g), l.innerHTML = a[g], C.wrapper.insertBefore(l, C.wrapper.firstChild)), g > j && (l = document.createElement(b.slideElement), l.className = b.slideClass, l.setAttribute("data-swiperindex", g), l.innerHTML = a[g], C.wrapper.appendChild(l))
    1147                             }
    1148                         }
    1149                         C.reInit(!0)
    1150                     }
    1151                 }, A()
    1152             }
    1153         };
    1154         Swiper.prototype = {
    1155             plugins: {},
    1156             wrapperTransitionEnd: function (a, b) {
    1157                 "use strict";
    1158 
    1159                 function c(h) {
    1160                     if (h.target === f && (a(e), e.params.queueEndCallbacks && (e._queueEndCallbacks = !1), !b))
    1161                         for (d = 0; d < g.length; d++) e.h.removeEventListener(f, g[d], c)
    1162                 }
    1163                 var d, e = this,
    1164             f = e.wrapper,
    1165             g = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"];
    1166                 if (a)
    1167                     for (d = 0; d < g.length; d++) e.h.addEventListener(f, g[d], c)
    1168             },
    1169             getWrapperTranslate: function (a) {
    1170                 "use strict";
    1171                 var b, c, d, e, f = this.wrapper;
    1172                 return "undefined" == typeof a && (a = "horizontal" === this.params.mode ? "x" : "y"), this.support.transforms && this.params.useCSS3Transforms ? (d = window.getComputedStyle(f, null), window.WebKitCSSMatrix ? e = new WebKitCSSMatrix("none" === d.webkitTransform ? "" : d.webkitTransform) : (e = d.MozTransform || d.OTransform || d.MsTransform || d.msTransform || d.transform || d.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), b = e.toString().split(",")), "x" === a && (c = window.WebKitCSSMatrix ? e.m41 : parseFloat(16 === b.length ? b[12] : b[4])), "y" === a && (c = window.WebKitCSSMatrix ? e.m42 : parseFloat(16 === b.length ? b[13] : b[5]))) : ("x" === a && (c = parseFloat(f.style.left, 10) || 0), "y" === a && (c = parseFloat(f.style.top, 10) || 0)), c || 0
    1173             },
    1174             setWrapperTranslate: function (a, b, c) {
    1175                 "use strict";
    1176                 var d, e = this.wrapper.style,
    1177             f = {
    1178                 x: 0,
    1179                 y: 0,
    1180                 z: 0
    1181             };
    1182                 3 === arguments.length ? (f.x = a, f.y = b, f.z = c) : ("undefined" == typeof b && (b = "horizontal" === this.params.mode ? "x" : "y"), f[b] = a), this.support.transforms && this.params.useCSS3Transforms ? (d = this.support.transforms3d ? "translate3d(" + f.x + "px, " + f.y + "px, " + f.z + "px)" : "translate(" + f.x + "px, " + f.y + "px)", e.webkitTransform = e.MsTransform = e.msTransform = e.MozTransform = e.OTransform = e.transform = d) : (e.left = f.x + "px", e.top = f.y + "px"), this.callPlugins("onSetWrapperTransform", f), this.params.onSetWrapperTransform && this.fireCallback(this.params.onSetWrapperTransform, this, f)
    1183             },
    1184             setWrapperTransition: function (a) {
    1185                 "use strict";
    1186                 var b = this.wrapper.style;
    1187                 b.webkitTransitionDuration = b.MsTransitionDuration = b.msTransitionDuration = b.MozTransitionDuration = b.OTransitionDuration = b.transitionDuration = a / 1e3 + "s", this.callPlugins("onSetWrapperTransition", {
    1188                     duration: a
    1189                 }), this.params.onSetWrapperTransition && this.fireCallback(this.params.onSetWrapperTransition, this, a)
    1190             },
    1191             h: {
    1192                 getWidth: function (a, b, c) {
    1193                     "use strict";
    1194                     var d = window.getComputedStyle(a, null).getPropertyValue("width"),
    1195                 e = parseFloat(d);
    1196                     return (isNaN(e) || d.indexOf("%") > 0 || 0 > e) && (e = a.offsetWidth - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-left")) - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-right"))), b && (e += parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-left")) + parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-right"))), c ? Math.ceil(e) : e
    1197                 },
    1198                 getHeight: function (a, b, c) {
    1199                     "use strict";
    1200                     if (b) return a.offsetHeight;
    1201                     var d = window.getComputedStyle(a, null).getPropertyValue("height"),
    1202                 e = parseFloat(d);
    1203                     return (isNaN(e) || d.indexOf("%") > 0 || 0 > e) && (e = a.offsetHeight - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-top")) - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-bottom"))), b && (e += parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-top")) + parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-bottom"))), c ? Math.ceil(e) : e
    1204                 },
    1205                 getOffset: function (a) {
    1206                     "use strict";
    1207                     var b = a.getBoundingClientRect(),
    1208                 c = document.body,
    1209                 d = a.clientTop || c.clientTop || 0,
    1210                 e = a.clientLeft || c.clientLeft || 0,
    1211                 f = window.pageYOffset || a.scrollTop,
    1212                 g = window.pageXOffset || a.scrollLeft;
    1213                     return document.documentElement && !window.pageYOffset && (f = document.documentElement.scrollTop, g = document.documentElement.scrollLeft), {
    1214                         top: b.top + f - d,
    1215                         left: b.left + g - e
    1216                     }
    1217                 },
    1218                 windowWidth: function () {
    1219                     "use strict";
    1220                     return window.innerWidth ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : void 0
    1221                 },
    1222                 windowHeight: function () {
    1223                     "use strict";
    1224                     return window.innerHeight ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : void 0
    1225                 },
    1226                 windowScroll: function () {
    1227                     "use strict";
    1228                     return "undefined" != typeof pageYOffset ? {
    1229                         left: window.pageXOffset,
    1230                         top: window.pageYOffset
    1231                     } : document.documentElement ? {
    1232                         left: document.documentElement.scrollLeft,
    1233                         top: document.documentElement.scrollTop
    1234                     } : void 0
    1235                 },
    1236                 addEventListener: function (a, b, c, d) {
    1237                     "use strict";
    1238                     "undefined" == typeof d && (d = !1), a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c)
    1239                 },
    1240                 removeEventListener: function (a, b, c, d) {
    1241                     "use strict";
    1242                     "undefined" == typeof d && (d = !1), a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c)
    1243                 }
    1244             },
    1245             setTransform: function (a, b) {
    1246                 "use strict";
    1247                 var c = a.style;
    1248                 c.webkitTransform = c.MsTransform = c.msTransform = c.MozTransform = c.OTransform = c.transform = b
    1249             },
    1250             setTranslate: function (a, b) {
    1251                 "use strict";
    1252                 var c = a.style,
    1253             d = {
    1254                 x: b.x || 0,
    1255                 y: b.y || 0,
    1256                 z: b.z || 0
    1257             },
    1258             e = this.support.transforms3d ? "translate3d(" + d.x + "px," + d.y + "px," + d.z + "px)" : "translate(" + d.x + "px," + d.y + "px)";
    1259                 c.webkitTransform = c.MsTransform = c.msTransform = c.MozTransform = c.OTransform = c.transform = e, this.support.transforms || (c.left = d.x + "px", c.top = d.y + "px")
    1260             },
    1261             setTransition: function (a, b) {
    1262                 "use strict";
    1263                 var c = a.style;
    1264                 c.webkitTransitionDuration = c.MsTransitionDuration = c.msTransitionDuration = c.MozTransitionDuration = c.OTransitionDuration = c.transitionDuration = b + "ms"
    1265             },
    1266             support: {
    1267                 touch: window.Modernizr && Modernizr.touch === !0 || function () {
    1268                     "use strict";
    1269                     return !!("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch)
    1270                 } (),
    1271                 transforms3d: window.Modernizr && Modernizr.csstransforms3d === !0 || function () {
    1272                     "use strict";
    1273                     var a = document.createElement("div").style;
    1274                     return "webkitPerspective" in a || "MozPerspective" in a || "OPerspective" in a || "MsPerspective" in a || "perspective" in a
    1275                 } (),
    1276                 transforms: window.Modernizr && Modernizr.csstransforms === !0 || function () {
    1277                     "use strict";
    1278                     var a = document.createElement("div").style;
    1279                     return "transform" in a || "WebkitTransform" in a || "MozTransform" in a || "msTransform" in a || "MsTransform" in a || "OTransform" in a
    1280                 } (),
    1281                 transitions: window.Modernizr && Modernizr.csstransitions === !0 || function () {
    1282                     "use strict";
    1283                     var a = document.createElement("div").style;
    1284                     return "transition" in a || "WebkitTransition" in a || "MozTransition" in a || "msTransition" in a || "MsTransition" in a || "OTransition" in a
    1285                 } (),
    1286                 classList: function () {
    1287                     "use strict";
    1288                     var a = document.createElement("div");
    1289                     return "classList" in a
    1290                 } ()
    1291             },
    1292             browser: {
    1293                 ie8: function () {
    1294                     "use strict";
    1295                     var a = -1;
    1296                     if ("Microsoft Internet Explorer" === navigator.appName) {
    1297                         var b = navigator.userAgent,
    1298                     c = new RegExp(/MSIE ([0-9]{1,}[.0-9]{0,})/);
    1299                         null !== c.exec(b) && (a = parseFloat(RegExp.$1))
    1300                     }
    1301                     return -1 !== a && 9 > a
    1302                 } (),
    1303                 ie10: window.navigator.msPointerEnabled,
    1304                 ie11: window.navigator.pointerEnabled
    1305             }
    1306         }, (window.jQuery || window.Zepto) && !function (a) {
    1307             "use strict";
    1308             a.fn.swiper = function (b) {
    1309                 var c;
    1310                 return this.each(function (d) {
    1311                     var e = a(this);
    1312                     if (!e.data("swiper")) {
    1313                         var f = new Swiper(e[0], b);
    1314                         d || (c = f), e.data("swiper", f)
    1315                     }
    1316                 }), c
    1317             }
    1318         } (window.jQuery || window.Zepto), "undefined" != typeof module && (module.exports = Swiper), "function" == typeof define && define.amd && define([], function () {
    1319             "use strict";
    1320             return Swiper
    1321         });
    1322     </script>
    1323     <script type="text/javascript">
    1324         window.onload = function () {
    1325             var allH = window.innerHeight;
    1326             var catapuller = $(".cata_pullermian_con").height(allH - 80);
    1327         }
    1328         var tabsSwiper = new Swiper('.swiper-container', {
    1329             speed: 500,
    1330             onSlideChangeStart: function () {
    1331                 $(".tabs .active").removeClass('active');
    1332                 $(".tabs a").eq(tabsSwiper.activeIndex).addClass('active');
    1333                 bodyHeight();
    1334             },
    1335             onSlideChangeEnd: function () {
    1336             }
    1337         });
    1338         $(".tabs a").on('touchstart mousedown', function (e) {
    1339             e.preventDefault();
    1340             $(".tabs .active").removeClass('active');
    1341             $(this).addClass('active');
    1342             tabsSwiper.swipeTo($(this).index());
    1343         });
    1344         $(".tabs a").click(function (e) {
    1345             e.preventDefault();
    1346         });
    1347         //            设置swiper-slide高度
    1348         function bodyHeight() {
    1349             $("body").scrollTop(0);
    1350             $(".swiper-slide").each(function () {
    1351                 if ($(this).hasClass("swiper-slide-visible")) {
    1352                     var contentH = $(this).find(".content-slide").height();
    1353                     $(".swiper-container").height(contentH);
    1354                 }
    1355             })
    1356         }
    1357 
    1358     </script>
    1359 </body>
    1360 </html>
    View Code

    如果等滚动条拉到底部时再加载,会影响用户体验。一般动态加载的时候都需要向服务端请求资源,这时需要时间。一个更佳的方式是,
     当滚动条距离浏览器底部存在一定距离(beforehandHeight)时,就动态加载更多数据,向服务端请求资源。也就是预加载。

    那么上面的 2或者3 的滚动方式 的判断 if 条件就需要改成: sum - beforehandHeight <= $obj.scrollTop() + $obj.height() 或者: this.scrollHeight - beforehandHeight <= $(this).scrollTop() + $(this).height()

    例如:当滚动条 离浏览器底部 还有50px时 就需要 加载数据(或者处理其他逻辑),那么 上面的 2或者3 的 判断 if 条件就 需要改成: sum - 50<= $obj.scrollTop() + $obj.height() 或者: this.scrollHeight - 50<= $(this).scrollTop() + $(this).height() 

  • 相关阅读:
    【NOIP2001】【Luogu1025】数的划分(可行性剪枝,上下界剪枝)
    【POJ2676】Sudoku(优化搜索顺序)
    【codevs4228】小猫爬山(最优化剪枝)
    实现两个路由器漫游(传统路由器做AP)
    查询数据SELECT 之单表查询
    MySQL数据库基础概念
    删除Mac上的mysql数据库
    MYSQL数据库
    并发编程
    socketserver及相关的类 (处理socket服务端)+ event事件的使用
  • 原文地址:https://www.cnblogs.com/linJie1930906722/p/5238825.html
Copyright © 2011-2022 走看看