From 72408e8ae31ba533f26c976f8a1baca1912adfa4 Mon Sep 17 00:00:00 2001 From: Fred Chu Date: Wed, 31 Oct 2012 17:15:25 +0800 Subject: [PATCH] release 1.1.1, [bug fixed] center against window failed --- CHANGELOG.md | 6 ++++++ jquery.center.js | 33 ++++++++++++++++++++++++--------- jquery.center.min.js | 4 ++-- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fca1b2..677753a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # jQuery Center Plugin CHANGELOG +## 1.1.1/ 2012-10-31 + +- [bug fix] center against window failed + + + ## 1.1.0 * Add center on window resize option, default to true diff --git a/jquery.center.js b/jquery.center.js index ea09e6a..922e7a5 100644 --- a/jquery.center.js +++ b/jquery.center.js @@ -1,17 +1,29 @@ /*! Copyright 2011, Ben Lin (http://dreamerslab.com/) * Licensed under the MIT License (LICENSE.txt). * -* Version: 1.1.0 +* Version: 1.1.1 * * Requires: jQuery 1.2.6+ */ ;( function( $, window ){ + var get_win_size = function (){ + if( window.innerWidth != undefined ){ + return [ window.innerWidth, window.innerHeight ]; + }else{ + var B = document.body; + var D = document.documentElement; + + return [ Math.max( D.clientWidth, B.clientWidth ), Math.max( D.clientHeight, B.clientHeight )]; + } + } + $.fn.center = function( opt ){ var $w = $( window ); // cache gobal var scrollTop = $w.scrollTop(); return this.each( function(){ var $this = $( this ); // cache $( this ) + // merge user options with default configs var configs = $.extend({ against : 'window', @@ -22,26 +34,29 @@ var centerize = function(){ var against = configs.against; + var against_w_n_h; var $against; if( against === 'window' ){ - $against = $w; + against_w_n_h = get_win_size(); }else if( against === 'parent' ){ - $against = $this.parent(); - scrollTop = 0; + $against = $this.parent(); + against_w_n_h = [ $against.width(), $against.height()]; + scrollTop = 0; }else{ - $against = $this.parents( against ); - scrollTop = 0; + $against = $this.parents( against ); + against_w_n_h = [ $against.width(), $against.height()]; + scrollTop = 0; } - var x = (( $against.width()) - ( $this.outerWidth())) * 0.5; - var y = (( $against.height()) - ( $this.outerHeight())) * configs.topPercentage + scrollTop; + var x = (( against_w_n_h[ 0 ]) - ( $this.outerWidth())) * 0.5; + var y = (( against_w_n_h[ 1 ]) - ( $this.outerHeight())) * configs.topPercentage + scrollTop; if( configs.top ) y = configs.top + scrollTop; $this.css({ 'left' : x, - 'top' : y + 'top' : y }); }; diff --git a/jquery.center.min.js b/jquery.center.min.js index c1ae70b..7c1114f 100644 --- a/jquery.center.min.js +++ b/jquery.center.min.js @@ -1,8 +1,8 @@ /*! Copyright 2011, Ben Lin (http://dreamerslab.com/) * Licensed under the MIT License (LICENSE.txt). * -* Version: 1.1.0 +* Version: 1.1.1 * * Requires: jQuery 1.2.6+ */ -;(function(b,a){b.fn.center=function(c){var d=b(a);var e=d.scrollTop();return this.each(function(){var h=b(this);var g=b.extend({against:"window",top:false,topPercentage:0.5,resize:true},c);var f=function(){var k=g.against;var j;if(k==="window"){j=d;}else{if(k==="parent"){j=h.parent();e=0;}else{j=h.parents(k);e=0;}}var i=((j.width())-(h.outerWidth()))*0.5;var l=((j.height())-(h.outerHeight()))*g.topPercentage+e;if(g.top){l=g.top+e;}h.css({left:i,top:l});};f();if(g.resize===true){d.resize(f);}});};})(jQuery,window); \ No newline at end of file +;(function($,window){var get_win_size=function(){if(window.innerWidth!=undefined)return[window.innerWidth,window.innerHeight];else{var B=document.body;var D=document.documentElement;return[Math.max(D.clientWidth,B.clientWidth),Math.max(D.clientHeight,B.clientHeight)]}};$.fn.center=function(opt){var $w=$(window);var scrollTop=$w.scrollTop();return this.each(function(){var $this=$(this);var configs=$.extend({against:"window",top:false,topPercentage:0.5,resize:true},opt);var centerize=function(){var against=configs.against;var against_w_n_h;var $against;if(against==="window")against_w_n_h=get_win_size();else if(against==="parent"){$against=$this.parent();against_w_n_h=[$against.width(),$against.height()];scrollTop=0}else{$against=$this.parents(against);against_w_n_h=[$against.width(),$against.height()];scrollTop=0}var x=(against_w_n_h[0]-$this.outerWidth())*0.5;var y=(against_w_n_h[1]-$this.outerHeight())*configs.topPercentage+scrollTop;if(configs.top)y=configs.top+scrollTop;$this.css({"left":x,"top":y})};centerize();if(configs.resize===true)$w.resize(centerize)})}})(jQuery,window); \ No newline at end of file