缩略图预览大图并且可以左右滑动

/*---------------------------------------------------------------------------------------------

@author       Constantin Saguin - @brutaldesign
@link            http://csag.co
@github        http://github.com/brutaldesign/swipebox
@version     1.2.1
@license      MIT License

----------------------------------------------------------------------------------------------*/

;
(function(window, document, $, undefined) {

	$.swipebox = function(elem, options) {

		var defaults = {
			useCSS : true,
			initialIndexOnArray : 0,
			hideBarsDelay : 3000,
			videoMaxWidth : 1140,
			vimeoColor : 'CCCCCC',
			beforeOpen : null,
			afterClose : null
		},

		plugin = this, elements = [], // slides array [{href:'...',
		// title:'...'}, ...],
		elem = elem, selector = elem.selector, $selector = $(selector), isTouch = document.createTouch !== undefined
				|| ('ontouchstart' in window)
				|| ('onmsgesturechange' in window)
				|| navigator.msMaxTouchPoints, supportSVG = !!(window.SVGSVGElement), winWidth = window.innerWidth
				? window.innerWidth
				: $(window).width(), winHeight = window.innerHeight
				? window.innerHeight
				: $(window).height(), html = '<div id="swipebox-overlay">\
				<div id="swipebox-slider"></div>\
				<div id="swipebox-action">\
					<a id="swipebox-prev"></a>\
					<a id="swipebox-next"></a>\
					<a id="swipebox-close">关闭</a>\
					<div class="scroll-page"><span class="curr-page">1</span><span>/</span><span class="total-page">5</span>\
    </div>\
				</div>\
		</div>';

		plugin.settings = {}

		plugin.init = function() {

			plugin.settings = $.extend({}, defaults, options);

			if ($.isArray(elem)) {

				elements = elem;
				ui.target = $(window);
				ui.init(plugin.settings.initialIndexOnArray);

			} else {

				$selector.click(function(e) {
							elements = [];
							var index, relType, relVal;

							if (!relVal) {
								relType = 'rel';
								relVal = $(this).attr(relType);
							}

							if (relVal && relVal !== ''
									&& relVal !== 'nofollow') {
								$elem = $selector.filter('[' + relType + '="'
										+ relVal + '"]');
							} else {
								$elem = $(selector);
							}

							$elem.each(function() {

										var title = null, href = null;

										if ($(this).attr('title'))
											title = $(this).attr('title');

										if ($(this).attr('href'))
											href = $(this).attr('href');

										elements.push({
													href : href,
													title : title
												});
									});

							index = $elem.index($(this));
							e.preventDefault();
							e.stopPropagation();
							ui.target = $(e.target);
							ui.init(index);
						});
			}
		}

		plugin.refresh = function() {
			if (!$.isArray(elem)) {
				ui.destroy();
				$elem = $(selector);
				ui.actions();
			}
		}

		var ui = {

			init : function(index) {
				if (plugin.settings.beforeOpen)
					plugin.settings.beforeOpen();
				this.target.trigger('swipebox-start');
				$.swipebox.isOpen = true;
				this.build(index);
				this.openSlide(index);
				this.openMedia(index);
				this.preloadMedia(index + 1);
				this.preloadMedia(index - 1);
			},

			build : function(index) {
				var $this = this;

				$('body').append(html);
				$("#swipebox-overlay").find(".curr-page").html(index + 1);
				$("#swipebox-overlay").find(".total-page")
						.html($selector.length);
				if ($this.doCssTrans()) {
					$('#swipebox-slider').css({
								'-webkit-transition' : 'left 0.4s ease',
								'-moz-transition' : 'left 0.4s ease',
								'-o-transition' : 'left 0.4s ease',
								'-khtml-transition' : 'left 0.4s ease',
								'transition' : 'left 0.4s ease'
							});
					$('#swipebox-overlay').css({
								'-webkit-transition' : 'opacity 1s ease',
								'-moz-transition' : 'opacity 1s ease',
								'-o-transition' : 'opacity 1s ease',
								'-khtml-transition' : 'opacity 1s ease',
								'transition' : 'opacity 1s ease'
							});
					$('#swipebox-action, #swipebox-caption').css({
								'-webkit-transition' : '0.5s',
								'-moz-transition' : '0.5s',
								'-o-transition' : '0.5s',
								'-khtml-transition' : '0.5s',
								'transition' : '0.5s'
							});
				}
				//图片等于一张的时候清除下方图片张数显示
        if (elements.length==1){
           $(".scroll-page").remove();
        }
				/*
				 * if(supportSVG){ var bg = $('#swipebox-action
				 * #swipebox-close').css('background-image'); bg =
				 * bg.replace('png', 'svg'); $('#swipebox-action
				 * #swipebox-prev,#swipebox-action
				 * #swipebox-next,#swipebox-action #swipebox-close').css({
				 * 'background-image' : bg }); }
				 */
				$.each(elements, function() {
							$('#swipebox-slider')
									.append('<div class="slide"></div>');
						});

				$this.setDim();
				$this.actions();
				$this.keyboard();
				$this.gesture();
				$this.animBars();
				$this.resize();

			},

			setDim : function() {

				var width, height, sliderCss = {};

				if ("onorientationchange" in window) {

					window.addEventListener("orientationchange", function() {
								if (window.orientation == 0) {
									width = winWidth;
									height = winHeight;
								} else if (window.orientation == 90
										|| window.orientation == -90) {
									width = winHeight;
									height = winWidth;
								}
							}, false);

				} else {

					width = window.innerWidth ? window.innerWidth : $(window)
							.width();
					height = window.innerHeight
							? window.innerHeight
							: $(window).height();
				}

				sliderCss = {
					width : width,
					height : height
				}

				$('#swipebox-overlay').css(sliderCss);

			},

			resize : function() {
				var $this = this;

				$(window).resize(function() {
							$this.setDim();
						}).resize();
			},

			supportTransition : function() {
				var prefixes = 'transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition'
						.split(' ');
				for (var i = 0; i < prefixes.length; i++) {
					if (document.createElement('div').style[prefixes[i]] !== undefined) {
						return prefixes[i];
					}
				}
				return false;
			},

			doCssTrans : function() {
				if (plugin.settings.useCSS && this.supportTransition()) {
					return true;
				}
			},

			gesture : function() {
				if (isTouch) {
					var $this = this, distance = null, swipMinDistance = 10, startCoords = {}, endCoords = {};
					var bars = $('#swipebox-caption, #swipebox-action');

					bars.addClass('visible-bars');
					$this.setTimeout();

					$('body').bind('touchstart', function(e) {

						$(this).addClass('touching');

						endCoords = e.originalEvent.targetTouches[0];
						startCoords.pageX = e.originalEvent.targetTouches[0].pageX;

						$('.touching').bind('touchmove', function(e) {
									e.preventDefault();
									e.stopPropagation();
									endCoords = e.originalEvent.targetTouches[0];

								});

						return false;

					}).bind('touchend', function(e) {
						e.preventDefault();
						e.stopPropagation();

						distance = endCoords.pageX - startCoords.pageX;

						if (distance >= swipMinDistance) {

							// swipeLeft
							$this.getPrev();

						} else if (distance <= -swipMinDistance) {

							// swipeRight
							$this.getNext();

						} else {
							// tap
							if (!bars.hasClass('visible-bars')) {
								$this.showBars();
								$this.setTimeout();
							} else {
								$this.clearTimeout();
								$this.hideBars();
							}

						}

						$('.touching').off('touchmove').removeClass('touching');

					});

				}
			},

			setTimeout : function() {
				if (plugin.settings.hideBarsDelay > 0) {
					var $this = this;
					$this.clearTimeout();
					$this.timeout = window.setTimeout(function() {
								$this.hideBars()
							}, plugin.settings.hideBarsDelay);
				}
			},

			clearTimeout : function() {
				window.clearTimeout(this.timeout);
				this.timeout = null;
			},

			showBars : function() {
				var bars = $('#swipebox-caption, #swipebox-action');
				if (this.doCssTrans()) {
					bars.addClass('visible-bars');
				} else {
					$('#swipebox-caption').animate({
								top : 0
							}, 500);
					$('#swipebox-action').animate({
								bottom : 0
							}, 500);
					setTimeout(function() {
								bars.addClass('visible-bars');
							}, 1000);
				}
			},

			hideBars : function() {
				var bars = $('#swipebox-caption, #swipebox-action');
				if (this.doCssTrans()) {
					bars.removeClass('visible-bars');
				} else {
					$('#swipebox-caption').animate({
								top : '-50px'
							}, 500);
					$('#swipebox-action').animate({
								bottom : '-50px'
							}, 500);
					setTimeout(function() {
								bars.removeClass('visible-bars');
							}, 1000);
				}
			},

			animBars : function() {
				var $this = this;
				var bars = $('#swipebox-caption, #swipebox-action');

				bars.addClass('visible-bars');
				$this.setTimeout();

				$('#swipebox-slider').click(function(e) {
							if (!bars.hasClass('visible-bars')) { // 丢
								$this.showBars();
								$this.setTimeout();
							}
						});

				$('#swipebox-action').hover(function() {
							$this.showBars();
							bars.addClass('force-visible-bars');
							$this.clearTimeout();

						}, function() {
							bars.removeClass('force-visible-bars');
							$this.setTimeout();

						});
			},

			keyboard : function() {
				var $this = this;
				$(window).bind('keyup', function(e) {
							e.preventDefault();
							e.stopPropagation();
							if (e.keyCode == 37) {
								$this.getPrev();
							} else if (e.keyCode == 39) {
								$this.getNext();
							} else if (e.keyCode == 27) {
								$this.closeSlide();
							}
						});
			},

			actions : function() {
				var $this = this;

				if (elements.length < 2) {
					$('#swipebox-prev, #swipebox-next').hide();
				} else {
					$('#swipebox-prev').bind('click touchend', function(e) {
								e.preventDefault();
								e.stopPropagation();
								$this.getPrev();
								$this.setTimeout();
							});

					$('#swipebox-next').bind('click touchend', function(e) {
								e.preventDefault();
								e.stopPropagation();
								$this.getNext();
								$this.setTimeout();
							});
				}

				$('#swipebox-close').bind('click touchend', function(e) {
							$this.closeSlide(); // 点击按钮关闭
						});
				$('.hiddd').bind('click touchend', function(e) {
							$this.closeSlide(); // 点击图片关闭
						});
			},

			setSlide : function(index, isFirst) {
				isFirst = isFirst || false;

				var slider = $('#swipebox-slider');

				if (this.doCssTrans()) {
					slider.css({
								left : (-index * 100) + '%'
							});
				} else {
					slider.animate({
								left : (-index * 100) + '%'
							});
				}

				$('#swipebox-slider .slide').removeClass('current');
				$('#swipebox-slider .slide').eq(index).addClass('current');
				this.setTitle(index);

				if (isFirst) {
					slider.fadeIn();
				}

				$('#swipebox-prev, #swipebox-next').removeClass('disabled');
				if (index == 0) {
					$('#swipebox-prev').addClass('disabled');
				} else if (index == elements.length - 1) {
					$('#swipebox-next').addClass('disabled');
				}
				$("#swipebox-overlay").find(".curr-page")
						.html(index + 1);
				$("#swipebox-overlay").find(".total-page")
						.html($selector.length);
			},

			openSlide : function(index) {
				$('html').addClass('swipebox');
				$(window).trigger('resize'); // fix scroll bar visibility on
				// desktop
				this.setSlide(index, true);
			},

			preloadMedia : function(index) {
				var $this = this, src = null;
				if (elements[index] !== undefined)
					src = elements[index].href;

				if (!$this.isVideo(src)) {
					setTimeout(function() {
								$this.openMedia(index);
							}, 1000);
				} else {
					$this.openMedia(index);
				}
			},

			openMedia : function(index) {
				var $this = this, src = null;

				if (elements[index] !== undefined)
					src = elements[index].href;
				var currentIndex = index;
				if (index < 0 || index >= elements.length) {
					return false;
				}

				if (!$this.isVideo(src)) {
					$this.loadMedia(src, function() {
								$('#swipebox-slider .slide').eq(index)
										.html(this);
							});
				} else {
					$('#swipebox-slider .slide').eq(index).html($this
							.getVideo(src));
				}
			},

			setTitle : function(index, isFirst) {
				var title = null;

				$('#swipebox-caption').empty();

				if (elements[index] !== undefined)
					title = elements[index].title;

				if (title) {
					$('#swipebox-caption').append(title);
				}
			},

			isVideo : function(src) {

				if (src) {
					if (src.match(/youtube\.com\/watch\?v=([a-zA-Z0-9\-_]+)/)
							|| src.match(/vimeo\.com\/([0-9]*)/)) {
						return true;
					}
				}

			},

			getVideo : function(url) {
				var iframe = '';
				var output = '';
				var youtubeUrl = url.match(/watch\?v=([a-zA-Z0-9\-_]+)/);
				var vimeoUrl = url.match(/vimeo\.com\/([0-9]*)/);
				if (youtubeUrl) {

					iframe = '<iframe width="560" height="315" src="//www.youtube.com/embed/'
							+ youtubeUrl[1]
							+ '" frameborder="0" allowfullscreen></iframe>';

				} else if (vimeoUrl) {

					iframe = '<iframe width="560" height="315"  src="http://player.vimeo.com/video/'
							+ vimeoUrl[1]
							+ '?byline=0&portrait=0&color='
							+ plugin.settings.vimeoColor
							+ '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';

				}

				return '<div class="swipebox-video-container" style="max-width:'
						+ plugin.settings.videomaxWidth
						+ 'px"><div class="swipebox-video">'
						+ iframe
						+ '</div></div>';
			},

			loadMedia : function(src, callback) {
				if (!this.isVideo(src)) {
					var img = $('<img>').on({
								'load' : function() {

									callback.call(img);
								},
								'click' : function() {

								}
							});

					img.attr('src', src);
				}
			},

			getNext : function() {
				var $this = this;
				index = $('#swipebox-slider .slide')
						.index($('#swipebox-slider .slide.current'));
				if (index + 1 < elements.length) {
					index++;
					$this.setSlide(index);
					$this.preloadMedia(index + 1);
				} else {

					$('#swipebox-slider').addClass('rightSpring');
					setTimeout(function() {
								$('#swipebox-slider')
										.removeClass('rightSpring');
							}, 500);
				}
			},

			getPrev : function() {
				index = $('#swipebox-slider .slide')
						.index($('#swipebox-slider .slide.current'));
				if (index > 0) {
					index--;
					this.setSlide(index);
					this.preloadMedia(index - 1);
				} else {

					$('#swipebox-slider').addClass('leftSpring');
					setTimeout(function() {
								$('#swipebox-slider').removeClass('leftSpring');
							}, 500);
				}
			},

			closeSlide : function() {
				$('html').removeClass('swipebox');
				$(window).trigger('resize');
				this.destroy();
			},

			destroy : function() {
				$(window).unbind('keyup');
				$('body').unbind('touchstart');
				$('body').unbind('touchmove');
				$('body').unbind('touchend');
				$('#swipebox-slider').unbind();
				$('#swipebox-overlay').remove();
				if (!$.isArray(elem))
					elem.removeData('_swipebox');
				if (this.target)
					this.target.trigger('swipebox-destroy');
				$.swipebox.isOpen = false;
				if (plugin.settings.afterClose)
					plugin.settings.afterClose();
			}

		};

		plugin.init();

	};

	$.fn.swipebox = function(options) {
		if (!$.data(this, "_swipebox")) {
			var swipebox = new $.swipebox(this, options);
			this.data('_swipebox', swipebox);
		}
		return this.data('_swipebox');
	}

}(window, document, jQuery));

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="format-detection" content="telephone=no,email=no"/>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>图片处理</title>
<style type="text/css">
* {margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;-webkit-tap-highlight-color:transparent;}
body { width: 100%;height: auto;margin: 0px auto;}
a { display: block;  margin: 0;  padding:0;   text-align: center;  }
a:link,a:visited{ text-decoration:none;  /*超链接无下划线*/ }
span {display: block;}
div { display: block; }
#fakecrop-fill a { margin: 4px 4px 0 0;   }
.container{ float: left; padding: 0 0 0 2%; width: 100%;}
.container img{ vertical-align: top;}
.scroll-page{ background-color:rgba(255,255,255,0.75);height: 25px; line-height: 25px; color: #000; border-radius: 4px; position: absolute;top: 15px; right: 42%; padding: 0 16px;}
.scroll-page span{ text-shadow:none; color: #000; float:left;}
#swipebox-action #swipebox-close{ background:#28a000;}
#swipebox-action{bottom:0px !important; border-top:none !important; background:none !important;font-family:微软雅黑;}
</style>
<link href="css/swipebox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="js/jquery.fakecrop.js"></script>
<script type="text/javascript" src="js/jquery.swipebox.js" ></script>
</head>

<body>
<div  class="container" id="fakecrop-fill">
	<a class="swipebox" href="images/1.jpg" style="float: left; overflow: hidden; width: 100px; height: 100px; position: relative;">
    	<img src="images/1.jpg" class="fc-init" style="display: inline; position: absolute; left: 0px; height: 177.5px; width: 100px;">
    </a>
    <a class="swipebox" href="images/2.jpg" style="float: left; overflow: hidden; width: 100px; height: 100px; position: relative;">
    	<img src="images/2.jpg" class="fc-init" style="display: inline; position: absolute; left: 0px; height: 177.5px; width: 100px;">
    </a>	
    <a class="swipebox" href="images/3.jpg" style="float: left; overflow: hidden; width: 100px; height: 100px; position: relative;">
    	<img src="images/3.jpg" class="fc-init" style="display: inline; position: absolute; left: 0px; height: 177.5px; width: 100px;">
    </a>		
</div>
<script>
$(document).ready(function () {
	$("#fakecrop-fill").html();
    $('#fakecrop-fill img').fakecrop();
    $(".swipebox").swipebox();
});
</script> 

</body>
</html>

html.swipebox {
  overflow: hidden!important;
}

#swipebox-overlay img {
  border: none!important;
}

#swipebox-overlay {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 99999!important;
  overflow: hidden;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}

#swipebox-slider {
  height: 100%;
  left: 0;
  top: 0;
  width: 100%;
  white-space: nowrap;
  position: absolute;
  display: none;
}

#swipebox-slider .slide {
  /*background: url("img/loader.gif") no-repeat center center;*/
  height: 100%;
  width: 100%;
  line-height: 1px;
  text-align: center;
  display: inline-block;
}

#swipebox-slider .slide:before {
  content: "";
  display: inline-block;
  height: 50%;
  width: 1px;
  margin-right: -1px;
}

#swipebox-slider .slide img,
#swipebox-slider .slide .swipebox-video-container {
  display: inline-block;
  margin: 0;
  padding: 0;
  width: 100%;
  height: auto;
  vertical-align: middle;
}

#swipebox-slider .slide .swipebox-video-container {
  background:none;
  max-width: 1140px;
  max-height: 100%;
  width: 100%;
  padding:5%;
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
}


#swipebox-slider .slide .swipebox-video-container .swipebox-video{
  width: 100%;
  height: 0;
  padding-bottom: 56.25%;
  overflow: hidden;
  position: relative;
}

#swipebox-slider .slide .swipebox-video-container .swipebox-video iframe{
  width: 100%!important; 
  height: 100%!important;
  position: absolute;
  top: 0; left: 0;
}

#swipebox-action, #swipebox-caption {
  position: absolute;
  left: 0;
  z-index: 999;
  height: 55px;
  width: 100%;
}

#swipebox-action {
  bottom: -50px;
}
#swipebox-action.visible-bars {
  bottom: 0;
}

#swipebox-action.force-visible-bars {
  bottom: 0!important;
}

#swipebox-caption {
  top: -50px;
  text-align: center;
}
#swipebox-caption.visible-bars {
  top: 0;
}

#swipebox-caption.force-visible-bars {
  top: 0!important;
}

#swipebox-action #swipebox-prev, #swipebox-action #swipebox-next,
#swipebox-action #swipebox-close {
  /*background-image: url("img/icons.png");
  background-repeat: no-repeat;*/
  border: none!important;
  text-decoration: none!important;
  cursor: pointer;
  position: absolute;
  width:60px;
  height:25px;
  bottom:15px;
  right:15px;
  color:#fff;
  text-align:center;
  line-height:25px;
   text-shadow:none;
    border-radius:4px;
}

#swipebox-action #swipebox-close {
 /* background-position: 15px 12px;*/
  right: 40px;
}

#swipebox-action #swipebox-prev {
  background-position: -32px 13px;
  /*right: 100px;*/
  left:40px;
}

#swipebox-action #swipebox-next {
  background-position: -78px 13px;
 /* right: 40px;*/
 left:100px;
}

#swipebox-action #swipebox-prev.disabled,
#swipebox-action #swipebox-next.disabled {
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
  opacity: 0.3;
}

#swipebox-slider.rightSpring {
  -moz-animation: rightSpring 0.3s;
  -webkit-animation: rightSpring 0.3s;
}

#swipebox-slider.leftSpring {
  -moz-animation: leftSpring 0.3s;
  -webkit-animation: leftSpring 0.3s;
}

@-moz-keyframes rightSpring {
  0% {
    margin-left: 0px;
  }

  50% {
    margin-left: -30px;
  }

  100% {
    margin-left: 0px;
  }
}

@-moz-keyframes leftSpring {
  0% {
    margin-left: 0px;
  }

  50% {
    margin-left: 30px;
  }

  100% {
    margin-left: 0px;
  }
}

@-webkit-keyframes rightSpring {
  0% {
    margin-left: 0px;
  }

  50% {
    margin-left: -30px;
  }

  100% {
    margin-left: 0px;
  }
}

@-webkit-keyframes leftSpring {
  0% {
    margin-left: 0px;
  }

  50% {
    margin-left: 30px;
  }

  100% {
    margin-left: 0px;
  }
}

@media screen and (max-width: 800px) {
  #swipebox-action #swipebox-close {
    /*left: 0;*/
	right: 15px;
  }

  #swipebox-action #swipebox-prev {
    left: 0px;
  }

  #swipebox-action #swipebox-next {
    left:60px;
  }
}


/* Skin 
--------------------------*/
#swipebox-overlay {
  background: #0d0d0d;
}

#swipebox-action, #swipebox-caption {
  text-shadow: 1px 1px 1px black;
  background-color: #0d0d0d;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0d0d0d), color-stop(100%, #000000));
  background-image: -webkit-linear-gradient(#0d0d0d, #000000);
  background-image: -moz-linear-gradient(#0d0d0d, #000000);
  background-image: -o-linear-gradient(#0d0d0d, #000000);
  background-image: linear-gradient(#0d0d0d, #000000);
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=95);
  opacity: 0.95;
}

#swipebox-action {
  border-top: 1px solid rgba(255, 255, 255, 0.2);
}

#swipebox-caption {
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  color: white!important;
  font-size: 15px;
  line-height: 43px;
  font-family: Helvetica, Arial, sans-serif;
}


/***
 * jquery.fakecrop.js
 * Copyright (c) 2012 Vuong Nguyen
 * http://vuongnguyen.com 
 */
(function ($) {
	var methods = {
		ratio : function (args) {
			var item = args.item,
				settings = args.settings;
			return { w : item.width()/settings.wrapperWidth, 
					h : item.height()/settings.wrapperHeight };
		},
		center : function (long, short) {
			return parseInt((long-short)/2, 10);
		},
		scaleToFill : function (args) {
			var item = args.item,
			settings = args.settings,
			ratio = settings.ratio,
			width = item.width(),
			height = item.height(),
			offset = {top: 0, left: 0};
			
			if (ratio.h > ratio.w) {
				width = settings.wrapperWidth;
				height = height / ratio.w;
				if (settings.center) {
					offset.top = methods.center(width, height);
				}
			} else {
				height = settings.wrapperHeight;
				width = width / ratio.h;
				if (settings.center) {
					offset.left = methods.center(height, width);
				}
			}
			
			if (settings.center) {
				args.wrapper.css('position', 'relative');
				item.css({
					'position' : 'absolute',
					'top' : ['-', offset.top, 'px'].join(''),
					'left' : offset.left + 'px'
				});
			}
			
			return item.height(height).attr('height', height + 'px')
						.width(width).attr('width', width + 'px');
		},
		scaleToFit : function (args) {
			var item = args.item,
				settings = args.settings,
				ratio = settings.ratio,
				width = item.width(),
				height = item.height(),
				offset = {top: 0, left: 0};
			
			if (ratio.h > ratio.w) {
				height = settings.wrapperHeight,
				width = parseInt((item.width() * settings.wrapperHeight)/item.height(), 10);
				if (settings.center) {
					offset.left = methods.center(height, width);
				}
			} else {
				height = parseInt((item.height() * settings.wrapperWidth)/item.width(), 10),
				width = settings.wrapperWidth;
				if (settings.center) {
					offset.top = methods.center(width, height);
				}
			}

			args.wrapper.css({
				'width' : (settings.squareWidth ? settings.wrapperWidth : width) + 'px',
				'height' : settings.wrapperHeight + 'px'
			});
			
			if (settings.center) {
				args.wrapper.css('position', 'relative');
				item.css({
					'position' : 'absolute',
					'top' : offset.top +'px',
					'left' : offset.left + 'px'
				});
			}
			return item.height(height).attr('height', height + 'px')
						.width(width).attr('width', width + 'px');
		},
		init : function (options) {
			var settings = $.extend({
				wrapperSelector : null,
				wrapperWidth : 100,
				wrapperHeight : 100,
				center : true,
				fill : true,
				initClass : 'fc-init',
				doneEvent : 'fakedropdone',
				squareWidth : true
			}, options),
			_init = function () {
				var item = $(this),
					wrapper = settings.wrapperSelector ? item.closest(settings.wrapperSelector) : item.parent(),
					args = { item : item,
							settings : settings,
							wrapper : wrapper }; 
					settings.ratio = methods.ratio(args);
					if (settings.fill) {
						wrapper.css({
							'float' : 'left',
							'overflow' : 'hidden',
							'width' : settings.wrapperWidth + 'px',
							'height' : settings.wrapperHeight + 'px'
						});
						methods.scaleToFill(args);
					} else {
						methods.scaleToFit(args);
					}
					
					item.data('fc.settings', settings)
						.addClass(settings.initClass) // Add class to container after initialization
						.trigger(settings.doneEvent); // Publish an event to announce that fakecrop in initialized
			},
			images = this.filter('img'),
			others = this.filter(':not(img)');
			if (images.length) {
				images.bind('load', function () {
					_init.call(this);
					this.style.display = 'inline';
				}).each(function () {
					// trick from paul irish's https://gist.github.com/797120/7176db676f1e0e20d7c23933f9fc655c2f120c58
					if (this.complete || this.complete === undefined) {
						var src = this.src;
						this.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
						this.src = src;
						this.style.display = 'none';
					}
				});
			}
			if (others.length) {
				others.each(_init);
			}
			return this;
		}	
	};
	$.fn.fakecrop = function (method) {
		if (methods[method]) {
			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
		} else if (typeof method === 'object' || !method) {
			return methods.init.apply(this, arguments);
		} else {
			$.error('Method ' + method + ' does not exist on jQuery.fakecrop');
		} 
	};
})(jQuery);

之前做项目做到分享的时候,做过上传图片为缩略图模式,并且可以进行大图预览

就用了fakecrop以及swipebox进行显示

下面是我的代码:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值