125 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /* ===================================================
 | |
|  * jquery-lite-image-resize v.1.0.1
 | |
|  * https://github.com/RayChang/jquery-lite-image-resize
 | |
|  * ===================================================
 | |
|  * How to use ?
 | |
|  *
 | |
|  * HTML element closest to the image to add class "resizeimg".
 | |
|  * 
 | |
|  * Example:
 | |
|  * <div class="resizeimg">
 | |
|  *     <img src="images url" />
 | |
|  * </div>
 | |
|  *
 | |
|  * Or you can use:
 | |
|  * $('your class').rsImg();
 | |
|  *
 | |
|  * Note : HTML structure must be a structure like the example above.
 | |
|  * 
 | |
| */
 | |
| 
 | |
| !function ($) {
 | |
| 
 | |
|     "use strict";
 | |
|     
 | |
|     var ResizeImg = function(element) {
 | |
|         this.element = $(element);
 | |
|         this.element.data('exists', true);
 | |
|     };
 | |
|     ResizeImg.prototype.resize = function() {
 | |
|         var $img = this.element.children('img').eq(0),
 | |
|             elW = this.element.innerWidth(),
 | |
|             elH = this.element.innerHeight(),
 | |
|             elScale = elW/elH,
 | |
|             image = document.createElement("img");
 | |
|         image.src = $img.attr('src');
 | |
|         this.element.css({
 | |
|             'position': 'relative',
 | |
|             'overflow': 'hidden',
 | |
|         });
 | |
|         function imageLoadComplete() {
 | |
|             var imgW = image.width,
 | |
|                 imgH = image.height,
 | |
|                 imgScale = imgW/imgH,
 | |
|                 portrait = {
 | |
|                     'position': 'absolute',
 | |
|                     'height': '100%',
 | |
|                     'width': 'auto',
 | |
|                     'max-width': 'none',
 | |
|                     'left': '50%',
 | |
|                     'top': 0,
 | |
|                     'margin-left': imgW*(elH/imgH)/-2
 | |
|                 },
 | |
|                 landscape = {
 | |
|                     'position': 'absolute',
 | |
|                     'height': 'auto',
 | |
|                     'max-height': 'none',
 | |
|                     'width': '100%',
 | |
|                     'left': 0,
 | |
|                     'top': '50%',
 | |
|                     'margin-top': imgH*(elW/imgW)/-2
 | |
|                 },
 | |
|                 center = {
 | |
|                     'position': 'absolute',
 | |
|                     'height': '100%',
 | |
|                     'width': '100%',
 | |
|                     'top': 0,
 | |
|                     'left': 0
 | |
|                 };
 | |
|             if(imgScale < 1) {
 | |
|                 if(elScale < 1) {
 | |
|                     if(elScale > imgScale) {
 | |
|                         $img.css(landscape);
 | |
|                     } else {
 | |
|                         $img.css(portrait);
 | |
|                     };
 | |
|                 } else {
 | |
|                    $img.css(landscape); 
 | |
|                 };
 | |
|             };
 | |
| 
 | |
|             if(imgScale > 1) {
 | |
|                 if(elScale > 1) {
 | |
|                     if(elScale > imgScale) {
 | |
|                         $img.css(landscape);
 | |
|                     } else {
 | |
|                         $img.css(portrait);
 | |
|                     };
 | |
|                 } else {
 | |
|                     $img.css(portrait);
 | |
|                 };
 | |
|             };
 | |
| 
 | |
|             if(imgScale == 1) {
 | |
|                 if(elScale < 1) {
 | |
|                     $img.css(portrait);
 | |
|                 } else if(elScale > 1) {
 | |
|                     $img.css(landscape);
 | |
|                 } else {
 | |
|                     $img.css(center);
 | |
|                 };
 | |
|             };
 | |
|             $img.fadeTo(500, 1);
 | |
| 
 | |
|         }
 | |
|         if(/MSIE 8.0/g.test($ua)) {
 | |
|             imageLoadComplete();
 | |
|         } else {
 | |
|             image.onload = imageLoadComplete;
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     $.fn.rsImg = function () {    
 | |
|         this.each(function () {
 | |
|             if(!$(this).data('exists')) {
 | |
|                 $(this).children("img").fadeTo(0,0);
 | |
|                 new ResizeImg(this).resize();
 | |
|             };
 | |
|         });
 | |
|     };
 | |
| 
 | |
|     $(function() {
 | |
|         $('.resizeimg').rsImg();
 | |
|     });
 | |
| }(window.jQuery);
 |