75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | ;(function ($, window, document, undefined) { | ||
|  |   'use strict'; | ||
|  | 
 | ||
|  |   Foundation.libs.equalizer = { | ||
|  |     name : 'equalizer', | ||
|  | 
 | ||
|  |     version : '5.4.7', | ||
|  | 
 | ||
|  |     settings : { | ||
|  |       use_tallest: true, | ||
|  |       before_height_change: $.noop, | ||
|  |       after_height_change: $.noop, | ||
|  |       equalize_on_stack: false | ||
|  |     }, | ||
|  | 
 | ||
|  |     init : function (scope, method, options) { | ||
|  |       Foundation.inherit(this, 'image_loaded'); | ||
|  |       this.bindings(method, options); | ||
|  |       this.reflow(); | ||
|  |     }, | ||
|  | 
 | ||
|  |     events : function () { | ||
|  |       this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){ | ||
|  |         this.reflow(); | ||
|  |       }.bind(this)); | ||
|  |     }, | ||
|  | 
 | ||
|  |     equalize: function(equalizer) { | ||
|  |       var isStacked = false, | ||
|  |           vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'), | ||
|  |           settings = equalizer.data(this.attr_name(true)+'-init'); | ||
|  | 
 | ||
|  |       if (vals.length === 0) return; | ||
|  |       var firstTopOffset = vals.first().offset().top; | ||
|  |       settings.before_height_change(); | ||
|  |       equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer'); | ||
|  |       vals.height('inherit'); | ||
|  |       vals.each(function(){ | ||
|  |         var el = $(this); | ||
|  |         if (el.offset().top !== firstTopOffset) { | ||
|  |           isStacked = true; | ||
|  |         } | ||
|  |       }); | ||
|  | 
 | ||
|  |       if (settings.equalize_on_stack === false) { | ||
|  |         if (isStacked) return; | ||
|  |       }; | ||
|  | 
 | ||
|  |       var heights = vals.map(function(){ return $(this).outerHeight(false) }).get(); | ||
|  | 
 | ||
|  |       if (settings.use_tallest) { | ||
|  |         var max = Math.max.apply(null, heights); | ||
|  |         vals.css('height', max); | ||
|  |       } else { | ||
|  |         var min = Math.min.apply(null, heights); | ||
|  |         vals.css('height', min); | ||
|  |       } | ||
|  |       settings.after_height_change(); | ||
|  |       equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer'); | ||
|  |     }, | ||
|  | 
 | ||
|  |     reflow : function () { | ||
|  |       var self = this; | ||
|  | 
 | ||
|  |       this.S('[' + this.attr_name() + ']', this.scope).each(function(){ | ||
|  |         var $eq_target = $(this); | ||
|  |         self.image_loaded(self.S('img', this), function(){ | ||
|  |           self.equalize($eq_target) | ||
|  |         }); | ||
|  |       }); | ||
|  |     } | ||
|  |   }; | ||
|  | })(jQuery, window, window.document); | ||
|  | 
 |