12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /**
- * syncHeight - jQuery plugin to automagically Snyc the heights of columns
- * Made to seemlessly work with the CCS-Framework YAML (yaml.de)
- * @requires jQuery v1.0.3
- *
- * http://blog.ginader.de/dev/syncheight/
- *
- * Copyright (c) 2007-2009
- * Dirk Ginader (ginader.de)
- * Dirk Jesse (yaml.de)
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Version: 1.2
- *
- * Usage:
- $(window).load(function(){
- $('p').syncHeight();
- });
- */
- (function($) {
- var getHeightProperty = function() {
- var browser_id = 0;
- var property = [
- // To avoid content overflow in synchronised boxes on font scaling, we
- // use 'min-height' property for modern browsers ...
- ['min-height','0px'],
- // and 'height' property for Internet Explorer.
- ['height','1%']
- ];
- // check for IE6 ...
- if($.browser.msie && $.browser.version < 7){
- browser_id = 1;
- }
- return { 'name': property[browser_id][0],
- 'autoheightVal': property[browser_id][1] };
- };
- $.getSyncedHeight = function(selector) {
- var max = 0;
- var heightProperty = getHeightProperty();
- // get maximum element height ...
- $(selector).each(function() {
- // fallback to auto height before height check ...
- $(this).css(heightProperty.name, heightProperty.autoheightVal);
- var val = $(this).height();
- if(val > max){
- max = val;
- }
- });
- return max;
- };
- $.fn.syncHeight = function(config) {
- var defaults = {
- updateOnResize: false, // re-sync element heights after a browser resize event (useful in flexible layouts)
- height: false
- };
- var options = $.extend(defaults, config);
- var e = this;
- var max = 0;
- var heightPropertyName = getHeightProperty().name;
- if(typeof(options.height) === "number") {
- max = options.height;
- } else {
- max = $.getSyncedHeight(this);
- }
- // set synchronized element height ...
- $(this).each(function() {
- $(this).css(heightPropertyName, max+'px');
- });
- // optional sync refresh on resize event ...
- if (options.updateOnResize === true) {
- $(window).resize(function(){
- $(e).syncHeight();
- });
- }
- return this;
- };
- })(jQuery);
|