<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>支持移动端手势滑动的幻灯片切换</title> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript" src="swipeslider.min.js"></script><!--引入js文件--> <!-- <link rel="stylesheet" type="text/css" href="swipeslider.css"> --> </head> <style type="text/css"> *{ margin: 0; padding: 0; } .container,#full_feature{ width: 100%; height: auto; margin: auto; } #full_feature{ position: relative; } .swipslider { overflow: hidden; display: block; /* padding-top: 60%;*/ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .swipslider .sw-slides { display: block; padding: 0; list-style: none; width: 100%; height: 100%; white-space: nowrap; font-size: 0; -webkit-transform: translateX(0); transform: translateX(0); bottom: 0; } .swipslider .sw-slide { width: 100%; height: 10rem; margin: auto; display: inline-block; position: relative; } .swipslider .sw-slide > img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); max-height: 100%; width: 100%; margin-left: auto; margin-right: auto; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .swipslider .sw-slide .sw-content { width: 100%; height: 100%; margin-left: 0; margin-right: 0; font-size: 14px; } .sw-next-prev { font-family: "Courier New", Courier, monospace; height: 50px; width: 50px; text-align: center; vertical-align: middle; position: absolute; line-height: 50px; font-size: 30px; font-weight: bolder; color: rgba(160, 160, 160, 0.53); top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); background-color: rgba(255, 255, 255, 0); border-radius: 50%; text-decoration: none; transition: all .2s ease-out; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .sw-next-prev:hover { background-color: rgba(255, 255, 255, 0.74); } .sw-next-prev:active { background-color: rgba(255, 255, 255, 0.5); } .sw-prev { left: 2%; } .sw-prev::after { content: '<'; } .sw-next { right: 2%; } .sw-next::after { content: '>'; } .sw-bullet { display: none !important; position: absolute; bottom: 2%; list-style: none; display: block; width: 100%; text-align: center; padding: 0; margin: 0; } .sw-bullet li { width: 10px; height: 10px; background-color: rgba(160, 160, 160, 0.53); border-radius: 50%; display: inline-block; cursor: pointer; transition: all .2s ease-out; } .sw-bullet li:hover { background-color: rgba(255, 255, 255, 0.74); } .sw-bullet li.active { background-color: rgba(255, 255, 255, 0.5); box-shadow: 0 0 2px rgba(160, 160, 160, 0.53); } .sw-bullet li:not(:last-child) { margin-right: 5px; } </style> <body> <div class="container"> <div id="full_feature" class="swipslider"> <ul class="sw-slides"> <li class="sw-slide"> <img src="http://www.jq22.com/img/cs/500x300a.png" alt=""> </li> <li class="sw-slide"> <img src="http://www.jq22.com/img/cs/500x300b.png" alt=""> </li> <li class="sw-slide"> <img src="http://www.jq22.com/img/cs/500x300c.png" alt=""> </li> </ul> </div> </div> <script type="text/javascript"> $(window).load(function() { $('#full_feature').swipeslider(); }); </script> </body> </html>
swipeslider.min.js 文件:
!function(n){ n.fn.swipeslider=function(i){ function t(){q=B.width(),p() } function e(n){ A&&(l(),n.originalEvent.touches&&(n=n.originalEvent.touches[0]),0==H&&(H=1,M=n.clientX) )} function o(n){ var i;i=n.originalEvent.touches?n.originalEvent.touches[0]:n;var t=i.clientX-M; if(1==H&&0!=t&&(H=2,N=z*-q),2==H){n.preventDefault();var e=1; (0==z&&i.clientX>M||z==Q-1&&i.clientX<M)&&(e=3),j=N+t/e,T(!1),x(j) }} function s(n){2==H&&(H=0,z=N>j?z+1:z-1,z=Math.min(Math.max(z,0),Q-1),j=z*-q,u(),p(),a()),H=0} function u(){ A=!1,window.setTimeout(c,G)}function c(){A=!0}function l(){L=!1,window.clearTimeout(K)} function a(){ O&&(L=!0,f())}function f(){ L&&(K=window.setTimeout(r,J)) } function r(){d(),f()} function d(){z+=1,p()} function w(){z-=1,p()} function p(){ T(!0),x(-z*q),0==z?window.setTimeout(m,G):z==Q-1&&window.setTimeout(v,G),k(z)} function v(){h(1)}function m(){h(Q-2)} function h(n){T(!1),z=n,x(-q*z),window.setTimeout(g,50)} function g(){T(!0)}function T(n){X(n?"all":"none")} function x(n){B.css("transform","translateX("+n+"px)")} function y(n){B.css("transition-duration",n+"ms")} function b(n){B.css("transition-timing-function",n)} function X(n){B.css("transition-property",n)} function E(){B.after('<span class="sw-next-prev sw-prev"></span>'),D.find(".sw-prev").click(function(){L&&(l(),w(),a())}), B.after('<span class="sw-next-prev sw-next"></span>'), D.find(".sw-next").click(function(){L&&(l(),d(),a())})} function P(n){B.after('<ul class="sw-bullet"></ul>'); for(var i=B.parent().find(".sw-bullet"),t=0;n>t;t++){ 0==t?i.append('<li class="sw-slide-'+t+' active"></li>'):i.append('<li class="sw-slide-'+t+'"></li>'); var e=D.find(".sw-slide-"+t);!function(n){e.click(function(){l(),z=n+1,p(),a()})}(t)}}function k(n){ var i=0;i=0==n?Q-3:n==Q-1?0:n-1,D.find(".sw-bullet").find("li").removeClass("active"),D.find(".sw-slide-"+i).addClass("active")}var D=this,B=this.find(".sw-slides"),C={transitionDuration:500,autoPlay:!0,autoPlayTimeout:4e3,timingFunction:"ease-out",prevNextButtons:!0,bullets:!0,swipe:!0,sliderHeight:"60%"},F=n.extend(C,i),H=0,M=0,N=0,j=0,z=0,Q=0,q=0,A=!0,G=F.transitionDuration,I=F.swipe,J=F.autoPlayTimeout,K=void 0,L=!0,O=F.autoPlay; return function(){n(D).css("padding-top",'0px'),q=B.width(),n(window).resize(t),F.prevNextButtons&&E(),B.find(".sw-slide:last-child").clone().prependTo(B),B.find(".sw-slide:nth-child(2)").clone().appendTo(B),Q=B.find(".sw-slide").length,F.bullets&&P(Q-2),y(G),b(F.timingFunction),X("all"),I&&(B.on("mousedown touchstart",e),n("html").on("mouseup touchend",s),n("html").on("mousemove touchmove",o)),h(1),a()}(),D}}(jQuery);